Spring Boot 框架的核心特性包括简化配置并快速开发,在这个机制下开发项目,当开发者们需要整合某一个功能时,只需要引入其特定的场景启动器 ( starter ) 即可,比如 Web 模块整合、JDBC 模块整合、Thymeleaf 模块整合,开发者们在编码前只需要在 pom.xml 文件中引入对应的 starter 依赖即可。
MyBatis-Spring-Boot-Starter 可以帮助开发者快速创建基于 Spring Boot 的 MyBatis 应用程序,那么使用 MyBatis-Spring-Boot-Starter 可以做什么呢?
- 构建独立的 MyBatis 应用程序
- 零模板
- 更少的 XML 配置代码甚至无 XML 配置
Spring Boot 整合 MyBatis 进行数据库的增、删、改、查
1.在开发项目之前需要在 MySQL 中先创建一张表
2.新建实体类和 Mapper 接口
3.新建 entity 包并在 entity 包下新建 User 类
4.新建 dao 包并在 dao 包中新建 UserDao 接口,并定义增删改查四个方法
5.创建 Mapper 接口的映射文件
在 resources 目录下新建 mapper 目录,并在 mapper 目录下新建 Mapper 接口的映射文件 UserMapper.xml,之后进行映射文件的编写。
5.1.首先,定义映射文件与 Mapper 接口的对应关系,比如该示例中,需要将 UserMapper.xml 文件与对应的 UserDao 接口类之间的关系定义出来:
<mapper namespace="ltd.newbee.mall.dao.UserDao">
5.2.之后,配置表结构和实体类的对应关系:
<resultMap type="ltd.newbee.mall.entity.User" id="UserResult"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="password" column="password"/> </resultMap>
5.3.最后,按照对应的接口方法,编写增删改查方法具体的 SQL 语句,最终的 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="ltd.newbee.mall.dao.UserDao"> <resultMap type="ltd.newbee.mall.entity.User" id="UserResult"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="password" column="password"/> </resultMap> <select id="findAllUsers" resultMap="UserResult"> select id,name,password from tb_user order by id desc </select> <insert id="insertUser" parameterType="ltd.newbee.mall.entity.User"> insert into tb_user(name,password) values(#{name},#{password}) </insert> <update id="updUser" parameterType="ltd.newbee.mall.entity.User"> update tb_user set name=#{name},password=#{password} where id=#{id} </update> <delete id="delUser" parameterType="int"> delete from tb_user where id=#{id} </delete> </mapper>
6.新建 MyBatisController
为了对 MyBatis 进行功能测试,在 controller 包下新建 MyBatisController 类,并新增 4 个方法分别接收对于 tb_user 表的增删改查请求,代码如下:
package ltd.newbee.mall.controller; import ltd.newbee.mall.dao.UserDao; import ltd.newbee.mall.entity.User; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; @RestController public class MyBatisController { @Resource UserDao userDao; // 查询所有记录 @GetMapping("/users/mybatis/queryAll") public List<User> queryAll() { return userDao.findAllUsers(); } // 新增一条记录 @GetMapping("/users/mybatis/insert") public Boolean insert(String name, String password) { if (StringUtils.isEmpty(name) || StringUtils.isEmpty(password)) { return false; } User user = new User(); user.setName(name); user.setPassword(password); return userDao.insertUser(user) > 0; } // 修改一条记录 @GetMapping("/users/mybatis/update") public Boolean insert(Integer id, String name, String password) { if (id == null || id < 1 || StringUtils.isEmpty(name) || StringUtils.isEmpty(password)) { return false; } User user = new User(); user.setId(id); user.setName(name); user.setPassword(password); return userDao.updUser(user) > 0; } // 删除一条记录 @GetMapping("/users/mybatis/delete") public Boolean insert(Integer id) { if (id == null || id < 1) { return false; } return userDao.delUser(id) > 0; } }