本文纯个人读书笔记,书籍《一步一步学 Spring Boot 2》
如果喜欢,可直接购买书籍。如有侵权,请联系删除
整合 MyBatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。目前在项目中经常被使用。
1.引入依赖
在 pom.xml 中添加 Spring Boot 对 MyBatis 的依赖。
pom.xml:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
2.添加配置
在 application.properties 中添加对应的配置。
application.properties:
### mybatis配置
#Mapper资源文件存放的路径。
mybatis.mapper-locations=classpath:/mappers/*Mapper.xml
#Dao接口文件存放的目录
mybatis.type-aliases-package=com.xiaoyue.demo.dao
3.Dao 层
新建 Dao 层接口 com.xiaoyue.demo.dao.UserDao。
UserDao:
@Mapper
public interface UserDao {
/**
* 描述:通过用户名和密码查询用户
* @param name
* @param password
*/
User findByNameAndPassword(@Param("name") String name,
@Param("password") String password);
}
Spring Boot 启动时候,会根据 application.properties 中的配置 mybatis.type-aliases-package,找到 UserDao 接口。
4.Mapper 文件
在 /src/main/resources 目录下新建 /mappers/UserMapper.xml 文件。
UserMapper.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.xiaoyue.demo.dao.UserDao">
<select id="findByNameAndPassword"
resultType="com.xiaoyue.demo.model.User"
parameterType="String">
select * from user u
<where>
u.name = #{name}
and u.password = #{password}
</where>
</select>
</mapper>
Spring Boot 在项目启动时候,会根据 application.properties 配置 mybatis.mapper-locations 找到该文件并进行加载。
5.服务层
接下来添加服务层对应的代码。在接口 UserService 新增一个接口。
UserService:
User findByNameAndPassword(String name, String password);
在 UserServiceImpl 中添加实现方法。
UserServiceImpl :
@Resource
private UserDao userDao;
@Override
public User findByNameAndPassword(String name, String password) {
return userDao.findByNameAndPassword(name, password);
}
6.测试
在测试类 DemoApplicationTests 中添加测试方法进行测试。
DemoApplicationTests:
@Resource
private UserService userService ;
@Test
public void testMybatis(){
User user = userService.findByNameAndPassword("aa", "123456");
logger.info(user.getId() + " " + user.getName());
}
7.结果
查看控制台日志打印信息。