1. 导入坐标
<dependencies>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>2.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
2. 创建项目结构
创建SpringBoot项目,项目结构如下图:
2.1 启动类
我们mapper是接口,需要让Mabatis去创建mapper接口的代理对象
@SpringBootApplication
//回头boot去扫描包下的所有接口,然后通过动态代理去创建目标的代理对象
@MapperScan("com.itheima.bootmybatis.mapper")
public class MyBatisBootApplication {
public static void main(String[] args) {
SpringApplication.run(MyBatisBootApplication.class,args);
}
}
2.2 创建mappper接口和实体类
实体类 :com.itheima.bootmybatis.pojo.User
@Data
public class User {
private Integer id;
private String username;
private Integer gender;
private Date birthday;
private String headImg;
private Integer status;
}
mapper接口:com.itheima.bootmybatis.mapper.UserMapper
//注意接口的名字应该与SQL文件的名字保持一致,即SQL文件中的namespace引入的是接口的路径
public interface UserMapper {
public User findUserById();
}
2.3 创建sql映射文件
<?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.itheima.bootmybatis.mapper.UserMapper">
<!--
1.select标签 => 里面写查询语句
2.id属性 => sql语句的名字(与mappper接口中的方法名相同)
3.resultType => 查询结果mybatis会自动帮咱们封装
-->
<select id="findUserById" resultType="com.itheima.bootmybatis.pojo.User">
select * from tb_user where id = 7
</select>
</mapper>
2.3 创建boot项目核心配置文件
# 设置连接数据库的参数
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///db_exam?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
# mybatis配置
mybatis.mapper-locations=classpath:mappers/*.xml
3. 单元测试
@SpringBootTest(classes = MyBatisBootApplication.class)
public class MyBatisTest {
@Autowired
UserMapper userMapper; //动态代理创建出来的对象,对象在代码运行的时候才会出现
@Test
public void testFindById(){
User user = userMapper.findUserById();
System.out.println(user);
}
}
注意:如果启动类上没有添加@MapperScan注解会报错
原因:spring中在mapper接口上写一个@Repository注解,只是为了标识,要想真正是这个接口被扫描,必须使用@MapperScanner