SpringBoot是一个快速开发框架,shiBatis是一个常用的持久层框架,在现价段的开发中,这两个框架经常会搭配使用,本文就细说一下在SpringBoot中如何整合MyBatis。
开发使用工具:IDEA
开发使用框架:Springboot+mybatis
首先,创建一个Springboot项目,本文通过IDEA创建,本文详细过程见下图,当然,创建f方式也有其他的,比如通过maven项目构建或者通过https://start.spring.io/进行创建后下载再导入到IDEA中.
DevTools用于热部署,Lombok用于添加一些注解,省略代码量.
项目结构:
接下来,在pom.xml文件中添加mybatis和mysql的依赖,这个依赖我们可以去maven仓库中去搜索,
maven仓库地址:https://mvnrepository.com/.
pom.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mybatis</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
pom文件配置后,不要忘记更近maven引入依赖啊.
maven更新后准备数据,在mybatis中创建相关数据库 表和字段:
CREATE TABLE `sys_role` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '角色ID',
`role_name` varchar(50) DEFAULT NULL COMMENT '角色名称',
`role_info` varchar(100) DEFAULT NULL COMMENT '角色相关信息',
`status` char(1) NOT NULL COMMENT '使用状态,0:正常使用,1:停止使用',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色信息表';
INSERT INTO `mybatis_test`.`sys_user`(`id`, `user_name`, `user_code`, `user_info`, `status`) VALUES (1, '刘备', 'liubei', NULL, '0');
INSERT INTO `mybatis_test`.`sys_user`(`id`, `user_name`, `user_code`, `user_info`, `status`) VALUES (2, '关羽', 'guanyu', NULL, '0');
INSERT INTO `mybatis_test`.`sys_user`(`id`, `user_name`, `user_code`, `user_info`, `status`) VALUES (3, '张飞', 'zhangfei', NULL, '0');
INSERT INTO `mybatis_test`.`sys_user`(`id`, `user_name`, `user_code`, `user_info`, `status`) VALUES (4, '诸葛亮', 'zhugeliang', NULL, '0');
数据准备完成,接下来进行项目的配置和代码编写,直接看代码:
application.yml:
server:
port: 8090
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.2.12:3306/mybatis_test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true
username: root
# 填写自己数据库密码
password: xxx
mybatis:
type-aliases-package: com.example.mybatis.model
mapper-locations: classpath:mapper/*Mapper.xml
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
level:
com.example.mybatis.mapper: debug
file:
name: log.txt
SysUserMapper.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.mybatis.mapper.SysUserMapper">
<resultMap id="sysUserMap" type="SysUser">
<id property="id" column="id"/>
<result property="userName" column="user_name"/>
<result property="userCode" column="user_code"/>
<result property="userInfo" column="user_info"/>
<result property="status" column="status"/>
</resultMap>
<sql id="sysUserSql">
id, user_name, user_code, user_info, status
</sql>
<select id="selectSysUserById" resultMap="sysUserMap">
select <include refid="sysUserSql"/> from sys_user where id = #{id}
</select>
<select id="selectSysUserList" resultMap="sysUserMap">
select <include refid="sysUserSql"/> from sys_user;
</select>
<insert id="insertSysUser" useGeneratedKeys="true" keyProperty="id">
insert into sys_user(<include refid="sysUserSql"/>) values (#{id}, #{userName}, #{userCode}, #{userInfo}, #{status})
</insert>
<update id="updateSysUser">
update sys_user set user_name = #{userName}, user_code = #{userCode}, user_info = #{userInfo}, status = #{status} where id = #{id}
</update>
<delete id="deleteSysUserById">
delete from sys_user where id = #{id}
</delete>
</mapper>
SysUserMapper.java代码:
package com.example.mybatis.mapper;
import com.example.mybatis.model.SysUser;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Classname SysUserMapper
* @Description 用户信息持久层
* @Author chengjunyu
* @Date 2022/1/24 11:01
*/
@Mapper
public interface SysUserMapper {
/**
* @Description 根据用户ID查询用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:06
* @Param id
* @Return com.example.mybatis.model.SysUser
* @Exception
*/
SysUser selectSysUserById(int id);
/**
* @Description 查询全部用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:07
* @Param * @param
* @Return java.util.List<com.example.mybatis.model.SysUser>
* @Exception
*/
List<SysUser> selectSysUserList();
/**
* @Description 新增用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:07
* @Param sysUser
* @Return int
* @Exception
*/
int insertSysUser(SysUser sysUser);
/**
* @Description 修改用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:07
* @Param sysUser
* @Return int
* @Exception
*/
int updateSysUser(SysUser sysUser);
/**
* @Description 删除用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:07
* @Param
* @Return int
* @Exception
*/
int deleteSysUserById(int id);
}
SysUserService代码:
package com.example.mybatis.service;
import com.example.mybatis.model.SysUser;
import java.util.List;
/**
* @Classname SysUserService
* @Description 用户信息Service层接口
* @Author chengjunyu
* @Date 2022/1/24 11:06
*/
public interface SysUserService {
/**
* @Description 根据用户ID查询用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:11
* @Param id
* @Return com.example.mybatis.model.SysUser
* @Exception
*/
SysUser selectSysUserById(int id);
/**
* @Description 查询全部用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:11
* @Param * @param
* @Return java.util.List<com.example.mybatis.model.SysUser>
* @Exception
*/
List<SysUser> selectSysUserList();
/**
* @Description 新增用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:12
* @Param sysUser
* @Return int
* @Exception
*/
int insertSysUser(SysUser sysUser);
/**
* @Description 修改用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:12
* @Param sysUser
* @Return int
* @Exception
*/
int updateSysUser(SysUser sysUser);
/**
* @Description 删除用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:12
* @Param id
* @Return int
* @Exception
*/
int deleteSysUserById(int id);
}
SysUserServiceImpl代码,本段代码省去了处理逻辑,实际工作中处理逻辑会比较多:
package com.example.mybatis.service.impl;
import com.example.mybatis.mapper.SysUserMapper;
import com.example.mybatis.model.SysUser;
import com.example.mybatis.service.SysUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @ClassName SysUserServiceImpl
* @Description 用户信息Service层接口实现类
* @Author chengjunyu
* @Date 2022/1/24 11:13
* @Version 1.0
*/
@Service
public class SysUserServiceImpl implements SysUserService {
@Resource
public SysUserMapper sysUserMapper;
/**
* @param id
* @Description 根据用户ID查询用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:11
* @Param id
* @Return com.example.mybatis.model.SysUser
* @Exception
*/
@Override
public SysUser selectSysUserById(int id) {
return sysUserMapper.selectSysUserById(id);
}
/**
* @Description 查询全部用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:11
* @Param * @param
* @Return java.util.List<com.example.mybatis.model.SysUser>
* @Exception
*/
@Override
public List<SysUser> selectSysUserList() {
return sysUserMapper.selectSysUserList();
}
/**
* @param sysUser
* @Description 新增用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:12
* @Param sysUser
* @Return int
* @Exception
*/
@Override
public int insertSysUser(SysUser sysUser) {
return sysUserMapper.insertSysUser(sysUser);
}
/**
* @param sysUser
* @Description 修改用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:12
* @Param sysUser
* @Return int
* @Exception
*/
@Override
public int updateSysUser(SysUser sysUser) {
return sysUserMapper.updateSysUser(sysUser);
}
/**
* @param id
* @Description 删除用户信息
* @Author chengjunyu
* @Date 2022/1/24 11:12
* @Param id
* @Return int
* @Exception
*/
@Override
public int deleteSysUserById(int id) {
return sysUserMapper.deleteSysUserById(id);
}
}
SysUserController代码:
package com.example.mybatis.controller;
import com.example.mybatis.model.SysUser;
import com.example.mybatis.service.SysUserService;
import org.apache.catalina.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @ClassName SysUserController
* @Description 用户信息Controller层
* @Author chengjunyu
* @Date 2022/1/24 11:18
* @Version 1.0
*/
@RestController
@RequestMapping("/sysUser")
public class SysUserController {
@Resource
public SysUserService sysUserService;
@GetMapping("/selectSysUser")
public SysUser selectSysUser(int id) {
return sysUserService.selectSysUserById(id);
}
@GetMapping("/selectSysUserList")
public List<SysUser> selectSysList() {
return sysUserService.selectSysUserList();
}
@PostMapping("/insertSysUser")
public String insertSysUser(SysUser sysUser) {
int count = sysUserService.insertSysUser(sysUser);
if(count > 0) {
return "新增人员信息成功。。。";
}
return "新增人员信息失败。。。";
}
@PostMapping("/updateSysUser")
public String updateSysUser(SysUser sysUser) {
int count = sysUserService.updateSysUser(sysUser);
if(count > 0) {
return "修改人员信息成功。。。";
}
return "修改人员信息失败。。。";
}
@PostMapping("/deleteSysUser")
public String deleteSysUser(int id) {
int count = sysUserService.deleteSysUserById(id);
if(count > 0) {
return "删除人员信息成功。。。";
}
return "删除人员信息失败。。。";
}
}
PostMan执行结果显示:
根据用户ID查询用户信息:
查询全部用户信息:
新增用户信息:
修改刘备的人员信息为username=刘皇叔:
删除ID=2的用户:
再次查询全部用户信息:
至此,所有的mysql的增删改查操作全部成功,SpringBoot整合MyBatis操作完成.