• Spring Boot-整合MyBatis


    Spring Boot整合MyBatis

    引入MyBatis和数据库驱动依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.15</version>
    </dependency>
    

    使用mybatis-spring-boot-starter,这样可以减少很多配置

    • 减少XML配置;

    • 自动检测存在的DataSource;

    • 自动使用SqlSessionFactoryBean传递DataSource作为一个输入创建和注册一个SqlSessionFactory实例;

    • 自动使用SqlSessionFactory创建和注册一个SqlSessionTemplate实例;

    • 自动扫描mapper,连接这些mapper和SqlSessionTemplate并注册mapper到spring上下文,这样一来这些mapper就可以被注入为您的bean

    在SSM架构中,使用MyBatis需要手动配置DataSource,SqlSessionFactory(配置数据源和Mybatis配置文件),MapperScannerConfigurer(扫描Mapper接口类)等,在Mybatis配置文件中可以配置实体别名和mapper的xml文件

    使用Mybatis-spring-boot-starter,这些配置都可以在applicaton.yml配置文件中配置

    使用Druid数据源

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.6</version>
    </dependency>
    

    使用阿里的druid作为数据库连接池,该连接池实现了监控的功能

    使用MyBatis

    SpringBoot中MyBatis的配置

    spring:
      # 数据源(数据库连接)配置
      datasource:
        druid:
          url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=true&allowMultiQueries=true&serverTimezone=Asia/Hong_Kong
          username: root
          password: ranger
          # 连接池配置
          initial-size: 5
          min-idle: 5
          max-active: 20
          max-wait: 30000   # 连接超时时间
          # 配置检测可以关闭的空闲连接间隔时间
          time-between-eviction-runs-millis: 60000
          # 配置连接在池中的最小生存时间
          min-evictable-idle-time-millis: 300000
          test-while-idle: true
          test-on-borrow: false
          test-on-return: false
    
          # WebStatFilter配置
          web-stat-filter:
            enabled: true
            # 添加过滤规则
            url-pattern: /*
            # 忽略过滤的格式
            exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
    
          # StatViewServlet配置
          stat-view-servlet:
            enabled: true
            # 访问路径为/druid时,跳转到StatViewServlet
            url-pattern: /druid/*
            # 是否能够重置数据
            reset-enable: false
            # 需要账号密码才能访问控制台
            login-username: druid
            login-password: ranger
    
          # 配置StatFilter
          filter:
            stat:
              log-slow-sql: true
        driver-class-name: com.mysql.jdbc.Driver
        
    # MyBatis的配置
    mybatis:
      # mapper的xml扫描路径
      mapper-locations: classpath:mapper/*.xml
      # type alias的扫描路径
      type-aliases-package: com.ranger.boot.mybatis.entity
      # mybatis配置文件
      # config-location: classpath:mybatis-config.xml
    

    启动类配置

    @SpringBootApplication
    // Mapper接口类扫描包
    @MapperScan("com.ranger.boot.mybatis.mapper")
    public class MyBatisApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyBatisApplication.class,args);
        }
    }
    

    编写对应的实体类,Mapper接口文件和xml文件

    public interface UserMapper {
        List<User> queryUser();
    }
    
    public class User {
        private String name;
        private int age;
        // getter,setter,toString
    }
    
    <?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.ranger.boot.mybatis.mapper.UserMapper">
        <select id="queryUser" resultType="com.ranger.boot.mybatis.entity.User">
            select * from user;
        </select>
    </mapper>
    
    1. 编写controller类调用UserMapper的方法,提供测试接口
    @SpringBootApplication
    @MapperScan("com.ranger.boot.mybatis.mapper")
    @Controller
    public class MyBatisApplication {
    
        @Autowired
        private UserMapper userMapper;
    
        public static void main(String[] args) {
            SpringApplication.run(MyBatisApplication.class,args);
        }
    
        @RequestMapping("users")
        @ResponseBody
        public List<User> getAllUser(){
            return userMapper.queryUser();
        }
    }
    

    最后启动应用访问users接口,就可以看到数据库中user表所有的记录

    结束

    简单的语句只需要使用@Insert、@Update、@Delete、@Select这4个注解即可,动态SQL语句需要使用@InsertProvider、@UpdateProvider、@DeleteProvider、@SelectProvider等注解,具体使用可以参考MyBatis官方文档

  • 相关阅读:
    clickhouse集群部署
    zookeeper集群部署
    linux下安装多路径multipath
    采用xtrabackup部署主从同步(生产)
    部署dg备库同步ogg
    goldengate同步(主库rac从库单节点)
    python3发送邮件
    python2发送邮件
    pip版本过高导致报错
    ERROR 1558 (HY000): Column count of mysql.user is wrong
  • 原文地址:https://www.cnblogs.com/watertreestar/p/11785923.html
Copyright © 2020-2023  润新知