Redis_框架整合2_Mybatis

1、導(dǎo)入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 # 配置監(jiān)控統(tǒng)計(jì)攔截的filters,去掉后監(jiān)控界面sql無(wú)法統(tǒng)計(jì),'wall'用于防火墻

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

? ??????????????????# 通過(guò)?connectProperties屬性來(lái)打開(kāi)mergeSql功能;慢SQL記錄

? ? ? ??useGlobalDataSourceStat: true # 合并多個(gè)DruidDataSource的監(jiān)控?cái)?shù)據(jù)

? ? ? ??druidLoginName: wjf # 登錄druid的賬號(hào)

? ? ? ??druidPassword: wjf # 登錄druid的密碼

? ? ? ??cachePrepStmts: true? # 開(kāi)啟二級(jí)緩存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" />

????????????<!-- 全局啟用或禁用延遲加載。當(dāng)禁用時(shí),所有關(guān)聯(lián)對(duì)象都會(huì)即時(shí)加載。-->

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

????????????<!-- 當(dāng)啟用時(shí),有延遲加載屬性的對(duì)象在被調(diào)用時(shí)將會(huì)完全加載任意屬性。

????????????????????否則,每種屬性將會(huì)按需要加載。-->? ? ? ?

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

????????????<!-- 是否允許單條sql 返回多個(gè)數(shù)據(jù)集? (取決于驅(qū)動(dòng)的兼容性) default:true -->

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

????????????<!-- 是否可以使用列的別名 (取決于驅(qū)動(dòng)的兼容性) default:true -->

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

????????????<!-- 允許JDBC 生成主鍵。需要驅(qū)動(dòng)器支持。如果設(shè)為了true,這個(gè)設(shè)置將強(qiáng)制

????????????使用被生成的主鍵,有一些驅(qū)動(dòng)器不兼容不過(guò)仍然可以執(zhí)行。? default:false? -->

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

????????????<!-- 指定 MyBatis 如何自動(dòng)映射數(shù)據(jù)基表的列 NONE:不隱射 PARTIAL:部分? FULL:全部-->

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

????????????<!-- 這是默認(rèn)的執(zhí)行類型? (SIMPLE: 簡(jiǎn)單; REUSE: 執(zhí)行器可能重復(fù)使用

????????????????????prepared statements語(yǔ)句;BATCH: 執(zhí)行器可以重復(fù)執(zhí)行語(yǔ)句和批量更新)? -->

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

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

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

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

????????????<!-- 使用駝峰命名法轉(zhuǎn)換字段。-->

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

????????????<!-- 設(shè)置本地緩存范圍 session:就會(huì)有數(shù)據(jù)的共享??

????????????????????statement:語(yǔ)句范圍 (這樣就不會(huì)有數(shù)據(jù)的共享) defalut:session -->

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

????????????<!-- 默認(rèn)為OTHER,為了解決oracle插入null報(bào)錯(cuò)的問(wèn)題要設(shè)置為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 監(jiān)控訪問(wèn)的設(shè)置? /////////////////

????@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白名單 (沒(méi)有配置或者為空,則允許所有訪問(wèn))

????????????reg.addInitParameter("deny", "192.168.16.111"); //IP黑名單 (存在共同時(shí),deny優(yōu)先于allow)

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

????????????reg.addInitParameter("loginPassword", this.druidPassword);//登錄密碼

????????????reg.addInitParameter("resetEnable", "false"); // 禁用HTML頁(yè)面上的“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;

????}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容