准备步骤
1.导入依赖
在一个普通springboot项目基础上加上这些依赖
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
2.创建实体类和数据库
public class Emp {
private int empId;
private String empName;
private int empAge;
//getset构造方法toString()省略
}
sql语句
CREATE DATABASE IF NOT EXISTS springbootMybatis;
USE springbootMybatis;
CREATE TABLE emp(
`emp_id` INT PRIMARY KEY AUTO_INCREMENT,
`emp_name` VARCHAR(50) NOT NULL,
`emp_age` INT NOT NULL
);
INSERT INTO emp(emp_name,emp_age) VALUES('老王',19);
INSERT INTO emp(emp_name,emp_age) VALUES('飞飞',23);
INSERT INTO emp(emp_name,emp_age) VALUES('飞科',61);
INSERT INTO emp(emp_name,emp_age) VALUES('学长',29);
INSERT INTO emp(emp_name,emp_age) VALUES('李默',51);
3.创建mapper文件和接口
EmpMapper接口
public interface EmpMapper {
List<Emp> getEmp();
}
EmpMapper.xml (要和接口同名哦)
<?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.mybatistest.mapper.EmpMapper">
<resultMap id="BaseResultMap" type="com.mybatistest.pojo.Emp" >
<id column="emp_id" property="empId" jdbcType="INTEGER" />
<result column="emp_name" property="empName" jdbcType="VARCHAR" />
<result column="emp_age" property="empAge" jdbcType="INTEGER" />
</resultMap>
<select id="getEmp" resultMap="BaseResultMap">
select * from emp
</select>
</mapper>
注意, mapper接口要放在主启动类所在包的子包下,不然扫描不到
4.配置yml文件
spring:
datasource:
name: mydb
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/springbootMybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8 #数据库连接地址
username: root # 数据库用户名
password: qq001129 # 数据库用户密码
driver-class-name: com.mysql.jdbc.Driver # 数据库驱动
mybatis:
mapper-locations: classpath*:/mybatis/mapper/*Mapper.xml # 你的mapper映射文件路径
type-aliases-package: com.mybatistest.mapper # mapper接口所在的包(不写也行)
logging:
level: #设置日志文件警告等级
com.atguigu.spring.boot.mapper: debug
com.atguigu.spring.boot.test: debug
我的文件结构如下图
5.测试
@RunWith(SpringRunner.class)
@SpringBootTest
class MybatistestApplicationTests {
@Autowired
// 这里有可能显示Could not autowire. No beans of 'EmpMapper' type found.
// 是idea的问题 , 可以不理会
private EmpMapper empMapper;
Logger logger = LoggerFactory.getLogger(MybatistestApplication.class);
@Test
void contextLoads() {
logger.info(empMapper.getEmp().toString());
}
}
结果
2020-12-02 09:53:57.277 INFO 3152 --- [ main] com.mybatistest.MybatistestApplication : [Emp{empId=1, empName='老王', empAge=19}, Emp{empId=2, empName='飞飞', empAge=23}, Emp{empId=3, empName='飞科', empAge=61}, Emp{empId=4, empName='学长', empAge=29}, Emp{empId=5, empName='李默', empAge=51}]
总结
springboot整合mybatis , 主要是简化了配置文件的操作, 使用yml可以更方便的配置. 顺带一提 , springboot并没有提供mybatis所需要的启动器 , 这个启动器是mybatis官方制作的 (就连Hibernate都有) , 替mybatis感到不公哈哈哈