SpringBoot 与 MyBatis 整合
SpringBoot与Mybatis 的整合我这里分了10步执行,执行如下:
0. 数据库配置信息
1. 数据库创建表
2. 创建 Spring Boot 工程
3. 创建 entity 表
4. 创建 mapper 接口
5. 创建 mapper 的xml文件
6. 创建 Servive 接口及对应的 ServiveImpl 实现
7. 创建 RestController
8. 启动测试
9. 接口测试
0. 数据库配置信息
mysql://10.1.3.38:3306/gaea root/123456
1. 数据库创建表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(32) NOT NULL AUTO_INCREMENT,
`userName` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`passWord` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`realName` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
2. 创建 Spring Boot 工程
通过IDEA创建Spring Boot工程,选择Web,DevOpt,MySql,JDBC,MyBatis,lombok 等模块,本工程需要使用swagger插件,增加swagger配置文件及pom.xml 依赖文件,关于swagger的配置,前面有专门章节介绍,请出门左拐,这里不作过多解释。
配置 application.yml 文件
server:
port: 8080
spring:
datasource:
username: root
password: 123456
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://10.1.3.38:3306/gaea?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
# 连接只读数据库时配置为true, 保证安全
readOnly: false
# 测试连接的有效性
connection-test-query: select 1 from dual
# 连接池名称
pool-name: springHikariCP
# 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
idleTimeout: 600000
# 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';)
maxLifetime: 1800000
# 连接池中允许的最大连接数,缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count)
maximumPoolSize: 12
# 空闲时保持的最小连接数
minimumIdle: 4
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
type-aliases-package: com.xx.data.entity
type-handlers-package: com.xx.data.entity
配置代码结构:
在Applicaiton同级目录下新建 config,entity,mapper,rest,service 包(package)
在Resouces 目录下建 mapper目录3. 创建 entity 表
新建User类
public class User {
private Integer id;
private String userName;
private String passWord;
private String realName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", passWord='" + passWord + '\'' +
", realName='" + realName + '\'' +
'}';
}
}
4. 创建 mapper 接口
新建 UserMapper 接口
@Mapper
@Repository
public interface UserMapper {
User Sel(int id);
}
注意:注解@Mapper 及 @Repository5. 创建 mapper 的xml文件
在resouces/mapper 目录下新建 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.xx.data.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.xx.data.entity.User">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="userName" jdbcType="VARCHAR" property="userName" />
<result column="passWord" jdbcType="VARCHAR" property="passWord" />
<result column="realName" jdbcType="VARCHAR" property="realName" />
</resultMap>
<select id="Sel" resultType="com.xx.data.entity.User">
select * from user where id = #{id}
</select>
</mapper>
注意:(1) namespace 的type 填写 type="com.xx.data.entity.User"
(2) Sel 的 resultType 填写 resultType="com.xx.data.entity.User"
(3) Sel 对应 参数类型需要匹配 6. 创建 Servive 接口及对应的 ServiveImpl 实现
此处我没有实现 服务接口,直接写了 UserService类的实现
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public User Sel(int id){
return userMapper.Sel(id);
}
}
注意:(1) 注解@Autowired
7. 创建 RestController
此处实现对 user RestFul api的调动
@RestController
@RequestMapping("/testBoot")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("getUser/{id}")
public String GetUser(@PathVariable int id){
return userService.Sel(id).toString();
}
}
注意: (1)注解@Autowired
(2)@GetMapping("getUser/{id}")
(3) 注解 @RestController及 @RequestMapping("/testBoot")
8. 启动测试
@MapperScan("com.example.mapper") //
@SpringBootApplication
public class DatagaeaApplication {
public static void main(String[] args) {
SpringApplication.run(DatagaeaApplication.class, args);
}
}
注意:(1) 注解 @MapperScan("com.xx.data.mapper") 扫描mapper接口
然后启动执行即可
9. 接口测试
到此为止,基于Spring Boot 与 Mybatis 的集成已经完毕。