一、创建数据库表 SQL
CREATE TABLE user (id INT, age INT, username VARCHAR(20), sex VARCHAR(1));
二、引入 Maven 依赖
MyBatis 依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
数据库驱动依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
三、创建与数据库表对应的实体类
public class User implements Serializable {
private Integer id;
private Integer age;
private String username;
private String sex;
// 省略 Get、Set 方法
}
四、创建持久层接口
public interface IUserDao {
List<User> findAll();
}
五、创建持久层接口的映射文件
<mapper namespace="chu.yi.bo.dao.IUserDao">
<select id="findAll" resultType="chu.yi.bo.domain.User">
SELECT * FROM user;
</select>
</mapper>
映射文件的文件名必须与持久层接口的类名一致,映射文件放在 resources 下,且文件路径必须与持久层接口的包路径一致。Maven 项目示意结构如下:
|-- main
|-- java
| |-- chu.yi.bo.dao
| | |-- IUserDao.java // 持久层接口
|-- resuouces
| |-- chu.yi.bo.dao
| | |-- IUserDao.xml // 映射文件
六、创建 MyBatis 核心配置文件
<!-- mybatis的主配置文件 -->
<configuration>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置 mysql 的环境 -->
<environment id="mysql">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的 4 个基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置 -->
<mappers>
<mapper resource="chu\yi\bo\dao\IUserDao.xml"/>
</mappers>
</configuration>
核心配置文件放在 resources 的根路径下,一般命名为 SqlMapConfig.xml
七、测试
public void testMyBatis() {
// 读取配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
// 创建 SqlSessionFactory 的构建者对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
// 使用构建者创建工厂对象 SqlSessionFactory
SqlSessionFactory factory = builder.build(in);
// 使用 SqlSessionFactory 生产 SqlSession 对象
SqlSession session = factory.openSession();
// 使用 SqlSession 创建 dao 接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
// 使用代理对象执行查询操作
List<User> users = userDao.findAll();
for(User user : users) {
System.out.println(user);
}
// 提交事务
session.commit();
// 释放资源
session.close();
in.close();
}