欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot 与 MyBatis 整合

程序员文章站 2024-01-26 15:21:58
...

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. 接口测试
    SpringBoot 与 MyBatis 整合

到此为止,基于Spring Boot 与 Mybatis 的集成已经完毕。

相关标签: SpringBoot