Redis_框架整合2_Mybatis

1、导入maven依赖pom.xml

<dependency>

        <groupId>mysql</groupId>

        <artifactId>mysql-connector-java</artifactId>

</dependency>

<dependency>

        <groupId>org.mybatis.spring.boot</groupId>

        <artifactId>mybatis-spring-boot-starter</artifactId>

        <version>1.3.0</version>

</dependency>

<dependency>

        <groupId>org.mybatis.generator</groupId>

        <artifactId>mybatis-generator-core</artifactId>

        <scope>test</scope>

        <version>1.3.2</version>

        <optional>true</optional>

</dependency>

<dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

<dependency>

        <groupId>com.alibaba</groupId>

        <artifactId>druid</artifactId>

        <version>1.1.10</version>

</dependency>

<dependency>

        <groupId>com.alibaba</groupId>

        <artifactId>fastjson</artifactId>

        <version>1.2.7</version>

</dependency>

2、引入配置文件

spring:

    datasource:

        url:

 jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&connectTimeout=3000&socketTimeout=1000

        username: root           # 需自己修改填写

        password: 123456         # 需自己修改填写

        type: com.alibaba.druid.pool.DruidDataSource

        driver-class-name: com.mysql.jdbc.Driver

        minIdle: 5

        maxActive: 100

        initialSize: 10

        maxWait: 60000

        timeBetweenEvictionRunsMillis: 60000

        minEvictableIdleTimeMillis: 300000

        validationQuery: select 'x'

        testWhileIdle: true

        testOnBorrow: false

        testOnReturn: false

        poolPreparedStatements: true

        maxPoolPreparedStatementPerConnectionSize: 50

        removeAbandoned: true

        filters: stat 

                    # ,wall,log4j # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙

        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 

                    # 通过 connectProperties属性来打开mergeSql功能;慢SQL记录

        useGlobalDataSourceStat: true # 合并多个DruidDataSource的监控数据

        druidLoginName: wjf # 登录druid的账号

        druidPassword: wjf # 登录druid的密码

        cachePrepStmts: true  # 开启二级缓存mybatis:

        typeAliasesPackage: com.xdclass.mobile.xdclassmobileredis.mapper# 需要自己修改填写

       mapperLocations: classpath:/com/xdclass/mobile/xdclassmobileredis/mapper/*.xml

       mapperScanPackage: com.xdclass.mobile.xdclassmobileredis.mapper

       configLocation: classpath:/mybatis-config.xml


3、引入mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 

     "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

     <settings>

            <!-- 使全局的映射器启用或禁用缓存。-->

            <setting name="cacheEnabled" value="true" />

            <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。-->

            <setting name="lazyLoadingEnabled" value="true" />

            <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。

                    否则,每种属性将会按需要加载。-->       

            <setting name="aggressiveLazyLoading" value="true"/>       

            <!-- 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true -->

            <setting name="multipleResultSetsEnabled" value="true" />

            <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->

            <setting name="useColumnLabel" value="true" />

            <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制

            使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false  -->

            <setting name="useGeneratedKeys" value="false" />

            <!-- 指定 MyBatis 如何自动映射数据基表的列 NONE:不隐射 PARTIAL:部分  FULL:全部-->

            <setting name="autoMappingBehavior" value="PARTIAL" />

            <!-- 这是默认的执行类型  (SIMPLE: 简单; REUSE: 执行器可能重复使用

                    prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新)  -->

            <setting name="defaultExecutorType" value="SIMPLE" />

            <setting name="defaultStatementTimeout" value="25" />

            <setting name="defaultFetchSize"value="100" />

            <setting name="safeRowBoundsEnabled" value="false" />

            <!-- 使用驼峰命名法转换字段。-->

            <setting name="mapUnderscoreToCamelCase" value="true" />

            <!-- 设置本地缓存范围 session:就会有数据的共享  

                    statement:语句范围 (这样就不会有数据的共享) defalut:session -->

            <setting name="localCacheScope" value="SESSION" />

            <!-- 默认为OTHER,为了解决oracle插入null报错的问题要设置为NULL -->

            <setting name="jdbcTypeForNull" value="NULL" />

            <setting name="lazyLoadTriggerMethods"value="equals,clone,hashCode,toString"/>

    </settings>

</configuration>

4、引入DataSourceConfig配置

package com.xdclass.mobile.xdclassmobileredis;

import com.alibaba.druid.pool.DruidDataSource;

import com.alibaba.druid.support.http.StatViewServlet;

import com.alibaba.druid.support.http.WebStatFilter;

import org.mybatis.spring.annotation.MapperScan;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.web.servlet.FilterRegistrationBean;

import org.springframework.boot.web.servlet.ServletRegistrationBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.Primary;

import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

import javax.sql.DataSource;

import java.sql.SQLException;

/**

 * Created by wanlichao on 2016/10/25 0025.

 */

@Configuration

@MapperScan("com.xdclass.mobile.xdclassmobileredis.mapper")

@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 50)

public class DataSourceConfig {

    private Logger logger = LoggerFactory.getLogger(DataSourceConfig.class);

    @Value("${spring.datasource.url}")

    private String dbUrl;

    @Value("${spring.datasource.type}")

    private String dbType;

    @Value("${spring.datasource.username}")

    private String username;

    @Value("${spring.datasource.password}")

    private String password;

    @Value("${spring.datasource.driver-class-name}")

    private String driverClassName;

    @Value("${spring.datasource.initialSize}")

    private int initialSize;

    @Value("${spring.datasource.minIdle}")

    private int minIdle;

    @Value("${spring.datasource.maxActive}")

    private int maxActive;

    @Value("${spring.datasource.maxWait}")

    private int maxWait;

    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")

    private int timeBetweenEvictionRunsMillis;

    @Value("${spring.datasource.minEvictableIdleTimeMillis}")

    private int minEvictableIdleTimeMillis;

    @Value("${spring.datasource.validationQuery}")

    private String validationQuery;

    @Value("${spring.datasource.testWhileIdle}")

    private boolean testWhileIdle;

    @Value("${spring.datasource.testOnBorrow}")

    private boolean testOnBorrow;

    @Value("${spring.datasource.testOnReturn}")

    private boolean testOnReturn;

    @Value("${spring.datasource.poolPreparedStatements}")

    private boolean poolPreparedStatements;

    @Value("${spring.datasource.filters}")

    private String filters;

    @Value("${spring.datasource.connectionProperties}")

    private String connectionProperties;

    @Value("${spring.datasource.useGlobalDataSourceStat}")

    private boolean useGlobalDataSourceStat;

    @Value("${spring.datasource.druidLoginName}")

    private String druidLoginName;

    @Value("${spring.datasource.druidPassword}")

    private String druidPassword;

    @Bean(name="dataSource",destroyMethod = "close", initMethod="init")

    @Primary //不要漏了这

    public DataSource dataSource(){

            DruidDataSource datasource =new DruidDataSource();

            try{

                datasource.setUrl(this.dbUrl);

                datasource.setDbType(dbType);

                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);

                datasource.setPoolPreparedStatements(poolPreparedStatements);

                datasource.setFilters(filters);

            } catch (SQLException e) {

                logger.error("druid configuration initialization filter", e);

            }

        return datasource;

    }

    /////////  下面是druid 监控访问的设置  /////////////////

    @Bean

    public ServletRegistrationBean druidServlet() {

            ServletRegistrationBean reg =new ServletRegistrationBean();

            reg.setServlet(new StatViewServlet());

            reg.addUrlMappings("/druid/*");  //url 匹配

            reg.addInitParameter("allow", "192.168.16.110,127.0.0.1"); 

                    // IP白名单 (没有配置或者为空,则允许所有访问)

            reg.addInitParameter("deny", "192.168.16.111"); //IP黑名单 (存在共同时,deny优先于allow)

            reg.addInitParameter("loginUsername", this.druidLoginName);//登录名

            reg.addInitParameter("loginPassword", this.druidPassword);//登录密码

            reg.addInitParameter("resetEnable", "false"); // 禁用HTML页面上的“Reset All”功能

            return reg;

    }

    @Bean(name="druidWebStatFilter")

    public FilterRegistrationBean filterRegistrationBean() {

            FilterRegistrationBean filterRegistrationBean =new FilterRegistrationBean();

            filterRegistrationBean.setFilter(new WebStatFilter());

            filterRegistrationBean.addUrlPatterns("/*");

            filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");                     //忽略资源

            filterRegistrationBean.addInitParameter("profileEnable", "true");

            filterRegistrationBean.addInitParameter("principalCookieName", "USER_COOKIE");

            filterRegistrationBean.addInitParameter("principalSessionName", "USER_SESSION");

            return filterRegistrationBean;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容