springboot mybatisplus 集成(附代码)

package com.baomidou.springboot.config;

import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.ibatis.mapping.DatabaseIdProvider;

import org.apache.ibatis.plugin.Interceptor;

import org.mybatis.spring.annotation.MapperScan;

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

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

import org.springframework.boot.bind.RelaxedPropertyResolver;

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

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

import com.baomidou.mybatisplus.spring.boot.starter.SpringBootVFS;

/**

 * mybatispuls配置

 * 

 * @author Davis

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

 */

@Configuration

@EnableConfigurationProperties(MybatisProperties.class)

@MapperScan("com.baomidou.springboot.mapper*")

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;

}

}

配置文件:

#app

server:

    port: 8080

#spring

spring:

  devtools:

    restart:

      enabled: false

  # MYSQL DATABASE CONFIG

  datasource:

    name: shopxx

    url: jdbc:mysql://127.0.0.1:3306/shopxx

    username: root

    password: 123456

    type: com.alibaba.druid.pool.DruidDataSource

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

    filters: stat

    maxActive: 20

    initialSize: 1

    maxWait: 60000

    minIdle: 1

    timeBetweenEvictionRunsMillis: 60000

    minEvictableIdleTimeMillis: 300000

    validationQuery: select 'x'

    testWhileIdle: true

    testOnBorrow: false

    testOnReturn: false

    poolPreparedStatements: true

    maxOpenPreparedStatements: 20

#mybatis

mybatis-plus:

  mapper-locations: classpath:/mapper/*Mapper.xml

  typeAliasesPackage: com.baomidou.springboot.entity

  global-config:

    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";

    id-type: 2

    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"

    field-strategy: 2

    #驼峰下划线转换

    db-column-underline: true

    #刷新mapper 调试神器

    refresh-mapper: true

    #数据库大写下划线转换

    #capital-mode: true

    #序列接口实现类配置

    #key-generator: com.baomidou.springboot.xxx

    #逻辑删除配置

    #logic-delete-value: 0

    #logic-not-delete-value: 1

    #自定义填充策略接口实现

    #meta-object-handler: com.baomidou.springboot.xxx

    #自定义SQL注入器

    #sql-injector: com.baomidou.springboot.xxx

  configuration:

    map-underscore-to-camel-case: true

    cache-enabled: false

#logging

logging:

  level: warn

相关推荐