您的位置:首页 > 编程语言 > Java开发

springboot整合mybatisplus配置

2017-06-09 09:45 337 查看
package com.demo.school_app;

import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.ibatis.mapping.DatabaseIdProvider;

import org.apache.ibatis.plugin.Interceptor;

import org.mybatis.spring.boot.autoconfigure.MybatisProperties;

import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;

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

import org.springframework.boot.bind.RelaxedPropertyResolver;

import org.springframework.boot.context.embedded.FilterRegistrationBean;

import org.springframework.boot.context.embedded.ServletRegistrationBean;

import org.springframework.boot.context.properties.EnableConfigurationProperties;

import org.springframework.context.annotation.Bean;

import
4000
org.springframework.context.annotation.Configuration;

import org.springframework.core.env.Environment;

import org.springframework.core.io.DefaultResourceLoader;

import org.springframework.core.io.ResourceLoader;

import org.springframework.util.ObjectUtils;

import org.springframework.util.StringUtils;

import com.alibaba.druid.pool.DruidDataSource;

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

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

import com.baomidou.mybatisplus.MybatisConfiguration;

import com.baomidou.mybatisplus.MybatisXMLLanguageDriver;

import com.baomidou.mybatisplus.entity.GlobalConfiguration;

import com.baomidou.mybatisplus.enums.DBType;

import com.baomidou.mybatisplus.plugins.PaginationInterceptor;

import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean;

/** 

 * mybatispuls配置

 * 

 * @author Davis

 * @date 2017年6月9日 上午9:25:37

 */

@Configuration

@EnableConfigurationProperties(MybatisProperties.class)

public class MybatisPlusConfig/*  implements EnvironmentAware*/ {

@Autowired 
private Environment environment;

private RelaxedPropertyResolver propertyResolver;  

@Autowired
private DataSource dataSource;

@Autowired
private MybatisProperties properties;

@Autowired
private ResourceLoader resourceLoader = new DefaultResourceLoader();

@Autowired(required = false)
private Interceptor[] interceptors;

@Autowired(required = false)
private DatabaseIdProvider databaseIdProvider;

/*
@Override
public void setEnvironment(
org.springframework.core.env.Environment environment) {
this.propertyResolver = new RelaxedPropertyResolver(environment, "spring.datasource.");  

}*/

/**

     * 配置DataSource

     * @return

     * @throws SQLException

     */

    @Bean

   public DataSource druidDataSource() throws SQLException {

    this.propertyResolver = new RelaxedPropertyResolver(environment, "spring.datasource.");

   

    System.out.println("注入druid!!!");

        DruidDataSource datasource = new DruidDataSource();

        datasource.setUrl(propertyResolver.getProperty("url"));

        datasource.setDriverClassName(propertyResolver.getProperty("driver-class-name"));

        datasource.setUsername(propertyResolver.getProperty("username"));

        datasource.setPassword(propertyResolver.getProperty("password"));

        datasource.setInitialSize(Integer.valueOf(propertyResolver.getProperty("initial-size")));

        datasource.setMinIdle(Integer.valueOf(propertyResolver.getProperty("min-idle")));

        datasource.setMaxWait(Long.valueOf(propertyResolver.getProperty("max-wait")));

        datasource.setMaxActive(Integer.valueOf(propertyResolver.getProperty("max-active")));

        datasource.setMinEvictableIdleTimeMillis(Long.valueOf(propertyResolver.getProperty("min-evictable-idle-time-millis")));

        try {

            datasource.setFilters(propertyResolver.getProperty("filters"));

        } catch (SQLException e) {

            e.printStackTrace();

        } 

        return datasource;

    }

/**
* mybatis-plus分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor page = new PaginationInterceptor();
page.setDialectType("mysql");
return page;
}
/**
* 这里全部使用mybatis-autoconfigure 已经自动加载的资源。不手动指定
* 配置文件和mybatis-boot的配置文件同步
* @return
*/
@Bean
public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() {
MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
mybatisPlus.setDataSource(dataSource);
mybatisPlus.setVfs(SpringBootVFS.class);
if (StringUtils.hasText(this.properties.getConfigLocation())) {
mybatisPlus.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));
}
mybatisPlus.setConfiguration(properties.getConfiguration());
if (!ObjectUtils.isEmpty(this.interceptors)) {
mybatisPlus.setPlugins(this.interceptors);
}
// MP 全局配置,更多内容进入类看注释
GlobalConfiguration globalConfig = new GlobalConfiguration();
globalConfig.setDbType(DBType.MYSQL.name());//数据库类型
// ID 策略 AUTO->`0`("数据库ID自增") INPUT->`1`(用户输入ID") ID_WORKER->`2`("全局唯一ID") UUID->`3`("全局唯一ID")
globalConfig.setIdType(2);
globalConfig.setSqlInjector(new com.baomidou.mybatisplus.mapper.AutoSqlInjector());
//MP 属性下划线 转 驼峰 , 如果原生配置 mc.setMapUnderscoreToCamelCase(true) 开启,该配置可以无。
//globalConfig.setDbColumnUnderline(true);
mybatisPlus.setGlobalConfig(globalConfig);
MybatisConfiguration mc = new MybatisConfiguration();
// 对于完全自定义的mapper需要加此项配置,才能实现下划线转驼峰
//mc.setMapUnderscoreToCamelCase(true); 
mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
mybatisPlus.setConfiguration(mc);
if (this.databaseIdProvider != null) {
mybatisPlus.setDatabaseIdProvider(this.databaseIdProvider);
}
if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {
mybatisPlus.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());
}
if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) {
mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());
}
if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {
mybatisPlus.setMapperLocations(this.properties.resolveMapperLocations());
}
return mybatisPlus;
}

/**

     * 注册一个StatViewServlet

     * @return

     */

    @Bean

    public ServletRegistrationBean DruidStatViewServle(){

       //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.

       ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); 

       //添加初始化参数:initParams 

       //白名单:

       // servletRegistrationBean.addInitParameter("allow","127.0.0.1"); 

       //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.

       // servletRegistrationBean.addInitParameter("deny","192.168.1.73"); 

       //登录查看信息的账号密码.

       servletRegistrationBean.addInitParameter("loginUsername","root");

       servletRegistrationBean.addInitParameter("loginPassword","root");

       //是否能够重置数据.

       servletRegistrationBean.addInitParameter("resetEnable","false");

       return servletRegistrationBean;

    } 

   

    /** 

     * 注册一个:filterRegistrationBean 

     * 

     * @return 

     */ 

    @Bean

    public FilterRegistrationBean druidStatFilter(){

       FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());

       //添加过滤规则.

       filterRegistrationBean.addUrlPatterns("/*"); 

       //添加不需要忽略的格式信息.

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

       return filterRegistrationBean; 

    } 
}

mysql的配置文件如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: