Spring Boot:Spring Boot配置Mybatis

作者: AubreyXue | 来源:发表于2018-12-19 13:52 被阅读0次

    1. maven引入依赖

    <!-- 数据库连接池-->
          <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
    
            <!-- mybatis 依赖-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis-spring-boot.version}</version>
            </dependency>
    
            <!-- jdbc支持-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-connector-java.version}</version>
            </dependency>
    

    2. 设置Druid数据源

    添加SingleDataSourceConfig.java配置文件,整合Druid数据源

    /**
     * 数据源配置
     * @Auther: hrabbit
     * @Date: 2018-12-19 11:18 AM
     * @Description:
     */
    @Configuration
    @MapperScan({"com.hrabbit.admin.modual.system.mapper"})
    public class SingleDataSourceConfig {
    
        /**
         * Druid配置
         */
        @Bean
        @ConfigurationProperties(prefix = "spring.datasource")
        public DruidProperties druidProperties() {
            return new DruidProperties();
        }
    }
    

    其中的DruidProperties.java的配置信息如下(这里使用了Lombok,因此省略了get/set方法,不了解Lombok的童鞋请搜索下):

    /**
     * 数据库数据源配置
     * @author hrabbit
     * @date 2018-11-21 11:18
     */
    @Component
    @ConfigurationProperties(prefix = "spring.datasource")
    @Data
    public class DruidProperties {
    
        private String url = "jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull";
    
        private String username = "root";
    
        private String password = "root";
    
        private String driverClassName = "com.mysql.jdbc.Driver";
    
        private Integer initialSize = 2;
    
        private Integer minIdle = 1;
    
        private Integer maxActive = 20;
    
        private Integer maxWait = 60000;
    
        private Integer timeBetweenEvictionRunsMillis = 60000;
    
        private Integer minEvictableIdleTimeMillis = 300000;
    
        private String validationQuery = "SELECT 'x'";
    
        private Boolean testWhileIdle = true;
    
        private Boolean testOnBorrow = false;
    
        private Boolean testOnReturn = false;
    
        private Boolean poolPreparedStatements = true;
    
        private Integer maxPoolPreparedStatementPerConnectionSize = 20;
    
        private String filters = "stat";
    
        public void config(DruidDataSource dataSource) {
    
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
    
            dataSource.setDriverClassName(driverClassName);
            dataSource.setInitialSize(initialSize);     //定义初始连接数
            dataSource.setMinIdle(minIdle);             //最小空闲
            dataSource.setMaxActive(maxActive);         //定义最大连接数
            dataSource.setMaxWait(maxWait);             //最长等待时间
    
            // 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    
            // 配置一个连接在池中最小生存的时间,单位是毫秒
            dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
            dataSource.setValidationQuery(validationQuery);
            dataSource.setTestWhileIdle(testWhileIdle);
            dataSource.setTestOnBorrow(testOnBorrow);
            dataSource.setTestOnReturn(testOnReturn);
    
            // 打开PSCache,并且指定每个连接上PSCache的大小
            dataSource.setPoolPreparedStatements(poolPreparedStatements);
            dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
    
            try {
                dataSource.setFilters(filters);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    3.配置application.yml文件中的mapper.xml的存放路径

    ### 启动端口号
    server:
      port: 8080
    ### 设置数据库
    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/hrabbit_admin?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
        username: root
        password: root
    ### 配置Mybatis
    mybatis:
      ### xml存放路径
      mapper-locations: classpath:mapper/*Mapper.xml
    

    mapper.xml的路径resources/mapper/*.Mapper.xml如下:

    image.png

    4. 创建SysUserMapper.java 的接口:

    创建一个根据id查询的接口:

    /**
     * 系统用户数据库层
     * @Auther: hrabbit
     * @Date: 2018-12-19 12:02 PM
     * @Description:
     */
    public interface SysUserMapper {
    
        /**
         * 根据id查询用户信息
         * @param id
         * @return
         */
        SysUser findSysUserById(@Param("id") Long id);
    }
    

    5. 在SysUserMapper.xml编写sql语句:

    <?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.hrabbit.admin.modual.system.mapper.SysUserMapper">
        <!--
            根据用户id获取角色信息
        -->
        <select id="findSysUserById" resultType="com.hrabbit.admin.modual.system.bean.SysUser">
            select * from sys_user where id=#{id};
        </select>
    </mapper>
    

    6. 启动项目,在Postman访问获取用户信息的接口:

    image.png

    欢迎访问我的个人博客:http://www.hrabbit.xin

    相关文章

      网友评论

        本文标题:Spring Boot:Spring Boot配置Mybatis

        本文链接:https://www.haomeiwen.com/subject/jondkqtx.html