springboot和mybatis整合

使用springboot和mybatis开发服务已久,也配置过多个服务,但一直没有总结个整合教程,现整理汇总一下,自己留存,也是供需要学习的小伙伴们参考,闲话少说,进入正题。

1. 环境准备

本教程所使用的环境如下:

  1. Java JDK1.8

  2. Intellij IDEA 2017.3.5

  3. Springboot2.0.6和mybatis3.4.6

  4. mysql 5.7

  5. maven 3.3.9

2. 项目创建

  1. 打开Idea创建新的项目,打开New Project项目后,按下图所示进行勾选:

勾选后,点击next按钮,进入项目配置页面,输入组织名及项目名称等,参考下图:

项目的基本信息输入完成后,点击next按钮进入项目模块选择界面,按图中标示选择,如下:

选择web模块后,点击SQL,选择持久化数据配置,如下图所示:

在web和SQL相应的支持模块都选择完成后,点击next按钮,进入后续的项目设置界面。 

 接下来,一直点击next按钮进入下一个界面,直到出现有Finish按钮的界面,点击Finish按钮后,不要着急,耐心等待一会,idea会自动创建项目,并自动下载所需的依赖包后,所创建的项目是Maven类型的项目,项目就正常显示在idea中了。

下面是Idea的Project项目视图中显示的项目目录组织,主要关注下图选中的部分,包括项目的pom.xml、项目代码及资源目录等:

 截止到这里,一个基本支持springboot和mybatis的项目就建立好了,还需要做些配置,并增加些示例代码后,我们就可以通过mybatis把数据存储到数据库中了,当然,也可以进行查询、修改、删除等。

3. 项目设置及代码实现

  1. mysql数据库表准备

1CREATE TABLE `user` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', 3 `username` varchar(32) DEFAULT NULL, 4 `password` varchar(32) DEFAULT NULL, 5 `email` varchar(128) CHARACTER SET utf8mb4 DEFAULT NULL, 6 PRIMARY KEY (`id`) 7) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; 8
  1. 项目的pom.xml中增加mybatis相关配置,如下:

1 <dependency> 2 <groupId>org.mybatis.spring.boot</groupId> 3 <artifactId>mybatis-spring-boot-starter</artifactId> 4 <version>1.3.2</version> 5 </dependency> 6 <dependency> 7 <groupId>mysql</groupId> 8 <artifactId>mysql-connector-java</artifactId> 9 <scope>runtime</scope> 10 </dependency> 11 <dependency> 12 <groupId>org.springframework.boot</groupId> 13 <artifactId>spring-boot-starter-jdbc</artifactId> 14 </dependency> 15

3.  创建实体类

1public class User { 2 private Integer id; 3 private String username; 4 private String password; 5 private String email; 6 7 public Integer getId() { 8 return id; 9 } 10 11 public void setId(Integer id) { 12 this.id = id; 13 } 14 15 public String getUsername() { 16 return username; 17 } 18 19 public void setUsername(String username) { 20 this.username = username; 21 } 22 23 public String getPassword() { 24 return password; 25 } 26 27 public void setPassword(String password) { 28 this.password = password; 29 } 30 31 public String getEmail() { 32 return email; 33 } 34 35 public void setEmail(String email) { 36 this.email = email; 37 } 38} 39
  1. 创建Mapper.xml文件

1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3<mapper namespace="cn.rtui.bookmgmt.user.dao.UserDao" > 4 <resultMap id="BaseResultMap" type="cn.rtui.bookmgmt.user.entity.User" > 5 <id column="id" property="id" jdbcType="INTEGER" /> 6 <result column="username" property="username" jdbcType="VARCHAR" /> 7 <result column="password" property="password" jdbcType="VARCHAR" /> 8 <result column="email" property="email" jdbcType="VARCHAR" /> 9 </resultMap> 10 <sql id="Base_Column_List" > 11 id, username, password, email 12 </sql> 13 <select id="selectById" resultMap="BaseResultMap" parameterType="java.lang.Integer" > 14 select 15 <include refid="Base_Column_List" /> 16 from user 17 where id = #{id} 18 </select> 19 <delete id="deleteById" parameterType="java.lang.Integer" > 20 delete from user 21 where id = #{id} 22 </delete> 23 <insert id="insert" parameterType="cn.rtui.bookmgmt.user.entity.User" > 24 insert into user (id, username, password,email) 25 values (#{id}, #{username}, #{password},#{email}) 26 </insert> 27 <update id="updateById" parameterType="cn.rtui.bookmgmt.user.entity.User" > 28 update user 29 set username = #{username},password = #{password},age = #{age} 30 where id = #{id} 31 </update> 32</mapper> 33

5. 创建Dao接口类

1public interface UserDao { 2 int insert(User user); 3 4 int deleteById(Integer id); 5 6 int updateById(User user); 7 8 User selectById(Integer id); 9} 10

 6. 创建service类

1@Service 2public class UserService { 3 @Autowired 4 UserDao userDao; 5 6 public int insert(User user){ 7 return userDao.insert(user); 8 } 9 10 public int deleteById(Integer id){ 11 return userDao.deleteById(id); 12 } 13 14 public int updateById(User user){ 15 return userDao.updateById(user); 16 } 17 18 public User selectById(Integer id){ 19 return userDao.selectById(id); 20 } 21} 22

 7. 创建Controller类

1@RestController 2@RequestMapping(value = "user") 3public class UserController { 4 @Autowired 5 UserService userService; 6 7 @RequestMapping(value = "insert") 8 int insert(@RequestBody User user){ 9 return userService.insert(user); 10 } 11 12 @RequestMapping(value = "delete") 13 int deleteById(Integer id){ 14 return userService.deleteById(id); 15 } 16 17 @RequestMapping(value = "update") 18 int updateById(User user){ 19 return userService.updateById(user); 20 } 21 22 @RequestMapping(value = "select") 23 User selectById(Integer id){ 24 return userService.selectById(id); 25 } 26} 27
  1. 配置扫描接口类,在应用的主类中配置,如下图所示:

  1. 修改application.yml文件,增加mybatis的相关配置,建议使用简洁的yml配置文件方式,如你的项目中没有这个文件,请新建一个,同时把application.properties文件删除,如果application.properties文件有配置信息,可以转换到yml文件中

1server: 2 port: 9080 3 4spring: 5 datasource: 6 ##数据源配置 7 type: com.alibaba.druid.pool.DruidDataSource 8 driver-class-name: com.mysql.jdbc.Driver 9 url: jdbc:mysql://localhost:3306/demo 10 username: root 11 password: 123456 12 13##mybatis基本配置 14mybatis: 15 mapper-locations: classpath:mapping/*.xml #mapper映射的xml文件的所在路径 16 type-aliases-package: cn.rtui.bookmgmt.user.entity #实体类的路径 17

按照以上信息配置完成后,springboot与mybatis的集成好了,就可以编译运行了,上述配置的例子中,controller提供的是rest类接口,get类型的请求可以使用浏览器直接调用,post请求可以使用postman进行调用测试。

示例代码请下载:示例下载点这里

代码交流 2021