首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot 与 MyBatis 整合

SpringBoot 与 MyBatis 整合

作者头像
Freedom123
发布2024-03-29 09:11:31
发布2024-03-29 09:11:31
21100
代码可运行
举报
文章被收录于专栏:DevOpsDevOps
运行总次数:0
代码可运行

SpringBoot与Mybatis 的整合我这里分了10步执行,执行如下:  0. 数据库配置信息  1. 数据库创建表  2. 创建 Spring Boot 工程  3. 创建 entity 表  4. 创建 mapper 接口  5. 创建 mapper 的xml文件  6. 创建 Servive 接口及对应的 ServiveImpl 实现   7. 创建 RestController  8. 启动测试  9. 接口测试 0. 数据库配置信息

代码语言:javascript
代码运行次数:0
运行
复制
mysql://10.1.3.38:3306/gaea  root/123456

1. 数据库创建表

代码语言:javascript
代码运行次数:0
运行
复制
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 文件

代码语言:javascript
代码运行次数:0
运行
复制
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类

代码语言:javascript
代码运行次数:0
运行
复制
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 接口

代码语言:javascript
代码运行次数:0
运行
复制
@Mapper
@Repository
public interface UserMapper {

  User Sel(int id);
}

    注意:注解@Mapper 及 @Repository5. 创建 mapper 的xml文件     在resouces/mapper 目录下新建 UserMapper.xml 文件

代码语言:javascript
代码运行次数:0
运行
复制
<?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类的实现

代码语言:javascript
代码运行次数:0
运行
复制
@Service
public class UserService {

  @Autowired
  UserMapper userMapper;

  public User Sel(int id){
    return userMapper.Sel(id);
  }
}

    注意:(1) 注解@Autowired 7. 创建 RestController     此处实现对 user RestFul api的调动

代码语言:javascript
代码运行次数:0
运行
复制
@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. 启动测试

代码语言:javascript
代码运行次数:0
运行
复制
@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 的集成已经完毕。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档