#### 我们建一个用户账户、密码的crud
新建maven工程,pom.xml添加相关依赖:
```java
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybaties</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
```
创建表
```sql
create table t_account(
id int primary key auto_increment,
username varchar(11),
password varchar(11),
age int);
```
新建数据表对应的实体类Account
```java
@Data
public class Account {
private long id;
private String username;
private String password;
private int age;
}
```
创建MyBatis的配置文件 config.xml,文件名可自定义
```java
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 通过environments的default值和environment的id来指定Mybatis运行时的数据库环境 -->
<environments default="development">
<!-- 开发环境(自己的计算机) -->
<environment id="development">
<!-- 事务提交分式:
JDBC:利用JDBC方式处理事务(commit rollback close)
MANAGED:将事务交由其他组件去托管(spring,jobss),默认会关闭连接
-->
<transactionManager type="JDBC"/>
<!-- 数据源类型:
UNPOOLED:传统的JDBC模式(每次访问数据库,均需要打开、关闭等数据库操作,但打开、关闭数据库是比较消耗性能的)
POOLED:使用数据库连接池
JNDI:从tomcat中获取一个内置的数据库连接池(数据库连接池-数据源)
-->
<dataSource type="POOLED">
<!-- 配置数据库信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="shuang"/>
<property name="password" value="mysql215311?"/>
</dataSource>
</environment>
<!-- 服务器 -->
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 配置数据库信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="shuang"/>
<property name="password" value="mysql215311?"/>
</dataSource>
</environment>
</environments>
</configuration>
```
使用原生接口
1,MyBatis框架需要开发者自定义SQL语句,写在Mapper.xml文件中,实际开发中,会为每个实体类创建对应的Mapper.xml,定义管理该对象数据的SQL
```java
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.shuang.mapper.AccountMapper">
<insert id="save" parameterType="com.shuang.entity.Account">
insert into t_account(username,password,age) values(#{usernaem},#{password},#{age});
</insert>
</mapper>
```
namespace通常设置为文件所在包+文件名的形式
id是实际调用MyBatis方法时需要用到的参数
paramentType是调用对应方法时的参数类型
2,在全局配置文件config.xml中注册AccountMapper.xml文件
```java
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 通过environments的default值和environment的id来指定Mybatis运行时的数据库环境 -->
<environments default="development">
<!-- 开发环境(自己的计算机) -->
<environment id="development">
<!-- 事务提交分式:
JDBC:利用JDBC方式处理事务(commit rollback close)
MANAGED:将事务交由其他组件去托管(spring,jobss),默认会关闭连接
-->
<transactionManager type="JDBC"/>
<!-- 数据源类型:
UNPOOLED:传统的JDBC模式(每次访问数据库,均需要打开、关闭等数据库操作,但打开、关闭数据库是比较消耗性能的)
POOLED:使用数据库连接池
JNDI:从tomcat中获取一个内置的数据库连接池(数据库连接池-数据源)
-->
<dataSource type="POOLED">
<!-- 配置数据库信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="shuang"/>
<property name="password" value="mysql215311?"/>
</dataSource>
</environment>
<!-- 服务器 -->
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 配置数据库信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="shuang"/>
<property name="password" value="mysql215311?"/>
</dataSource>
</environment>
</environments>
<!--注册AccountMapper.xml -->
<mappers>
<!--加载映射文件 -->
<mapper resource="org/sample/entity/personMapper.xml"/>
</mappers>
</configuration>
```
3,调用MyBatis的原生接口,来执行添加操作
```java
public class Test {
public static void main(String [] args){
//加载MyBaties配置文件
InputStream inputStream=Test.class.getResourceAsStream("config.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
SqlSession sqlSession=sqlSessionFactory.openSession();
// 通过config.xml里面的namespace+id来确定执行的语句
String statement="com.shuang.mapper.AccountMapper.save";
Account account=new Account(1L,"张三","123123",23);
sqlSession.insert(statement,account);
sqlSession.commit();
}
}
```
好了,增加完成了,其余类推