1.检查依赖
首先在项目的pom.xml文件中检查是否有mybatis依赖,没有则添加:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>3.0.4</version>
<scope>test</scope>
</dependency>
通常在创建SpringBoot3项目时可以选择mybatis依赖,创建完成后会自动导入。
2.配置实体和映射
之后在application.yml中配置mybatis实体和xml映射
# 配置mybatis实体和xml映射
mybatis:
## 映射xml 这里的classpath 默认是resources包
mapper-locations: classpath:mapper/*.xml
configuration:
# 配置日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true # 将数据库中下划线形式转换成驼峰形式展示
这里的mapper包可以自行创建,下面我们开始写一个测试用例,在mapper下创建一个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=""> <!-- 这里的namespace指它所映射的接口 -->
</mapper>
3.编写测试接口
下一步创建mapper包,用来书写接口:
下一步在这个包中创建测试接口:
这里给出该接口的测试代码,这个接口用于从数据库中获取信息。
package com.example.test01.mapper;
import com.example.test01.entity.Employee;
import java.util.List;
public interface EmployeeMapper {
List<Employee> selectAll();
}
并将这个接口的引用地址传到xml的namespace中:
4.主程序添加注解
下一步在启动程序中添加@MapperScan,用来扫描mapper包以及接口:
package com.example.test01;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.test01.mapper")
public class Test01Application {
public static void main(String[] args) {
SpringApplication.run(Test01Application.class, args);
}
}
5.实现接口方法
之前已经在mapper包下创建好了一个EmployeeMapper接口,现在要对接口中的方法进行实现,所以这里再创建一个service包,并在其中创建一个EmployeeService类用来实现这个接口:
@Service // 通过service来标注为Spring中的一个bean
public class EmployeeService {
@Resource
private EmployeeMapper employeeMapper; // 在服务层实现这个接口
public List<Employee> selectAll() {
List<Employee> list = employeeMapper.selectAll();
return list;
}
}
6.调用实现的方法
既然方法都已经准备好了,下一步就是想办法调用这个(让使用者调用)方法,我们一般在controller中编写代码,因此这里写一个EmployeeController类来实现调用。下面是测试代码:
@RestController // 对外提供数据接口,返回JSON格式
@RequestMapping("/employee") // 该类中所有接口的前缀都是 employee
public class EmployeeController {
@Resource
private EmployeeService employeeService;
@GetMapping("/selectAll")
public Result selectAll(){
List<Employee> list = employeeService.selectAll();
return Result.success(list);
}
}
7.创建实体
现在还有一个问题,List<Employee>中的Employee是什么?
回到最开始,我们将SpringBoot集成Mybatis的目的是用它来操作我们的数据库,笔者用的是mysql,现在调用方法什么的都写好了,接下来就是正式调用数据库中的信息,这里的Employee就是数据库表的实体。
笔者已经提前准备好了数据库信息,按照这些信息首先在IDEA中创建一个entity包,并在其中创建一个Employee类,这个类中存储相关属性:
public class Employee {
private Integer id;
private String name;
private String sex;
private Integer no;
private String description;
private Integer departmentId; // java中是驼峰,mysql中是下划线
// 这里省略get、set方法
}
注意该类中的属性在内容和顺序上都要和数据库中的相同。
8.实现测试
现在基本上所有的东西我们都准备好了,我们回到EmployeeMapper.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.example.test01.mapper.EmployeeMapper"> <!-- 这里的namespace指它所映射的接口 -->
<!-- 这里的 id 要和接口中的方法名相同 -->
<select id="selectAll" resultType="com.example.test01.entity.Employee">
select * from employee
</select>
</mapper>
到这一步我们终于完成了SpringBoot集成Mybatis并创建了一个测试用例,现在我们到浏览器中测试一下,下面是部分截图:
测试成功!
总结
SpringBoot集成Mybatis首先需要在pom.xml中检查是否含有依赖,环境安装好后,可以进行测试。首先创建mapper包(resources下)并在其中写入大致的框架,下一步写方法的接口,创建mapper包(com.example下)并创建接口方法;有了接口之后要对其进行实现,这里采用的是创建service包(com.example下)并在其中编写该接口的具体方法,实际上是一个包含该方法的类,下一步就是让这个方法可以被调用,我们回到controller中,创建一个控制器调用接口,最终往往需要调用数据库的信息,所以同时需要在java中创建数据库中的实体,以便于返回数据;这一切都完成后,回到mapper.xml中编写sql语句实现调用。