• SpringBoot_11_整合MyBatis


    SpringBoot_11_整合MyBatis

    整合MyBatis

    官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/

    Maven仓库地址https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.3

    在这里插入图片描述

    整合测试

    1. 导入 MyBatis 所需要的依赖

      <dependency>
          <groupId>org.mybatis.spring.bootgroupId>
          <artifactId>mybatis-spring-boot-starterartifactId>
          <version>2.2.2version>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
    2. 配置数据库连接信息

      这我们使用druid-spring-boot-starter

      <dependency>
          <groupId>com.alibabagroupId>
          <artifactId>druid-spring-boot-starterartifactId>
          <version>1.2.11version>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      spring:
        datasource:
          username: root
          password: '0000'
          #?serverTimezone=UTC解决时区的报错
          url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
          driver-class-name: com.mysql.cj.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
          druid:
            # 数据库连接池最大值
            max-active: 20
            # 数据库连接池初始值
            initial-size: 5
            # 数据库连接池最小空闲值
            min-idle: 5
            # 池中空闲连接大于minIdle且连接空闲时间大于该值,则关闭该连接,单位毫秒(5分钟,默认30分钟)
            min-evictable-idle-time-millis: 300000
            # 获取连接时最大等待时间,单位毫秒(1分钟)
            max-wait: 60000
            # 检测连接是否有效时执行的sql命令
            validation-query: select 1
            # 借用连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
            test-on-borrow: false
            # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
            test-on-return: false
            # 连接空闲时检测,如果连接空闲时间大于timeBetweenEvictionRunsMillis指定的毫秒,执行validationQuery指定的SQL来检测连接是否有效
            test-while-idle: true
            # 空闲连接检查、废弃连接清理、空闲连接池大小调整的操作时间间隔,单位是毫秒(1分钟)
            time-between-eviction-runs-millis: 60000
            # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
            filters: stat,wall
            # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
            connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
            #是否启用StatFilter默认值false,用于采集 web-jdbc 关联监控的数据。
            web-stat-filter:
              enabled: true
              #需要监控的 url
              url-pattern: /*
              #排除一些静态资源,以提高效率
              exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
            #是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)
            stat-view-servlet:
              enabled: true
              #内置的监控页面地址,例如 /druid/*,则内置监控页面的首页是 /druid/index.html
              url-pattern: /druid/*
              #是否允许清空统计数据
              reset-enable: false
              login-username: admin
              login-password: admin
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
    3. 测试数据库是否连接成功!

    4. 创建实体类,导入 Lombok!

      User.java

      package com.lee.pojo;
      
      import lombok.AllArgsConstructor;
      import lombok.Data;
      import lombok.NoArgsConstructor;
      
      @Data
      @AllArgsConstructor
      @NoArgsConstructor
      public class User {
          private int id;
          private String name;
          private String pwd;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
    5. 创建mapper目录以及对应的 Mapper 接口

      UserMapper.java

      package com.lee.mapper;
      
      import com.lee.pojo.User;
      import org.apache.ibatis.annotations.Mapper;
      import org.springframework.stereotype.Repository;
      
      import java.util.List;
      
      // 这个注解表示了这是一个 mybatis 的 mapper 类
      @Mapper
      @Repository
      public interface UserMapper {
      
          List<User> queryUserList();
      
          User queryUserById(int id);
      
          int addUser(User user);
      
          int updateUser(User user);
      
          int deleteUser(int id);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
    6. 对应的Mapper映射文件

      UserMapper.xml

      
      DOCTYPE mapper
              PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
              "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      
      <mapper namespace="ncom.lee.mapper.UserMapper">
          
          <select id="queryUserList" resultType="User">
              select * from mybatis.user;
          select>
      
          <select id="queryUserById" resultType="User">
              select * from mybatis.user where id = #{id};
          select>
      
          <insert id="addUser" parameterType="User">
              insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd});
          insert>
      
          <update id="updateUser" parameterType="User">
              update mybatis.user set name=#{name},pwd = #{pwd} where id = #{id};
          update>
      
          <delete id="deleteUser" parameterType="int">
              delete from mybatis.user where id = #{id}
          delete>
      mapper>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
    7. maven配置资源过滤问题

      <resources>
          <resource>
              <directory>src/main/javadirectory>
              <includes>
                  <include>**/*.xmlinclude>
              includes>
              <filtering>truefiltering>
          resource>
      resources>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    8. 编写部门的 UserController 进行测试!

      @RestController
      public class UserController {
          @Autowired
          private UserMapper userMapper;
      
          @GetMapping("/queryUserList")
          public List<User> queryUserList() {
              List<User> userList = userMapper.queryUserList();
      
              for (User user : userList) {
                  System.out.println(user);
              }
              return userList;
          }
          
           //添加一个用户
          @GetMapping("/addUser")
          public String addUser() {
              userMapper.addUser(new User(8,"阿毛","123456"));
              return "ok";
          }
      
          //修改一个用户
          @GetMapping("/updateUser")
          public String updateUser() {
              userMapper.updateUser(new User(8,"阿毛","123456"));
              return "ok";
          }
      
          @GetMapping("/deleteUser")
          public String deleteUser() {
              userMapper.deleteUser(8);
              return "ok";
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35

    启动项目访问进行测试!

  • 相关阅读:
    英飞凌TC3xx--深度手撕HSM安全启动(四)--TC3xx HSM使能和配置技巧
    冰箱“扩容”的战事,在今夏格外猛烈
    FastDFS模拟场景
    按头安利!好看又实用的电机 SolidWorks模型素材看这里
    jQuery中ajax的使用
    Unity实现UI的边缘检测和拖拽拉伸功能
    NISP网络安全中渗透测试的流程是什么
    Android studio实现自定义圆形进度条 带刻度进度条 计步效果 时速表 水波纹效果
    K_A04_003 基于单片机驱动COG12864显示图片文字和字符串
    在安卓项目中使用 FFmpeg 实现 GIF 拼接(可扩展为实现视频会议多人同屏效果)
  • 原文地址:https://blog.csdn.net/ayoM_/article/details/126667654