1.创建测试数据库
CREATE DATABASE `mybatis`; -- 使用此数据库 USE `mybatis`; -- 创建 user 表 CREATE TABLE user( `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(30) NOT NULL, `pwd` VARCHAR(30) NOT NULL )ENGINE=INNODB CHARSET UTF8; -- 添加3条测试数据 INSERT INTO user(`name`, `pwd`) VALUES ('张三', '864531'), ('李四', '1564513'), ('刘鹏飞', '9846513')
2.搭建项目
使用IDEA创建一个空的maven项目

然后删除其中的src项目,将此工程作为一个父工程
3.添加maven依赖
<!-- mybatis 依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
4.添加第一个Module测试项目


5.创建pojo实体类
使用@Data注解可以省去大量get/set方法
@Data public class User implements Serializable { private Integer id; private String name; private String pwd; }
6.配置Mybatis核心文件mybatis-config.xml
<!-- mybatis 核心配置 -->
<configuration>
<!-- 运行环境 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
7.创建一个工具类用于获取SqlSession
public class MyBatisUtil { private static SqlSessionFactory sqlSessionFactory; static { try { // 初始化构建 SqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } /** * 通过 SqlSessionFactory 创建一个 SqlSession 对象 * * @return SqlSession 对象 */ public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }
8.添加UserMapper接口
public interface UserMapper { /** * 查询所有用户信息 * * @return 用户信息 */ public List<User> getUserList(); }
9.添加UserMapper.xml配置文件编写sql语句
mapper namespace="com.bai.dao.UserMapper"> <!-- 查询所有用户信息 --> <select id="getUserList" resultType="com.bai.pojo.User"> select * from mybatis.user; </select> </mapper>
10.添加测试类测试
public class UserMapperTest { @Test public void test01() { SqlSession sqlSession = null; try { // 1.获取到 SqlSession 对象那个 sqlSession = MyBatisUtil.getSqlSession(); // 2.通过 getMapper 方法加载对应的 UserMapper 接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 3.执行接口方法 List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } } catch (Exception e) { e.printStackTrace(); } finally { // 4.关闭 sqlSession 对象 if (sqlSession != null) { sqlSession.close(); } } } }
然后通过运行我们发现一个被遗忘的问题, UserMapper文件并没有被注册到 MapperRegistry 中
Type interface com.bai.dao.UserMapper is not known to the MapperRegistry.
我们要解决这个问题,需要在 mybatis-config.xml 文件中注册此 Mapper 文件

然后我们还有遇到一个初始化异常错误
Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource com/bai/dao/UserMapper.xml
发生这个错误是因为在 java 源码中并不能加载 xml 类型的文件,要解决这个问题,需要修改一个 pom.xml 文件,添加一些配置
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<!-- 支持 properties 在 resources 包中存在 -->
<include>**/*.properties</include>
<!-- 支持 xml 文件在 resources 包中存在 -->
<include>**/*.xml</include>
</includes>
<!-- 是否过滤 : 是 -->
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<!-- 支持 properties 在 java 包中存在 -->
<include>**/*.properties</include>
<!-- 支持 xml 文件在 java 包中存在 -->
<include>**/*.xml</include>
</includes>
<!-- 是否过滤 : 是 -->
<filtering>true</filtering>
</resource>
</resources>
</build>
最终测试结果:
