import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.MybatisXMLLanguageDriver;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.JdbcType;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.boot.autoconfigure.MybatisProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
// 启动类添加@ComponentScan(basePackages= {"com.albb.server","com.xxx.xxx"})
@Configuration
@MapperScan("com.albb.server.**.mapper")
public class MybatisPlusConfig {
@Autowired
private DataSource dataSource;
@Autowired
private MybatisProperties properties;
/**
* mybatis-plus分页插件<br>
*
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
/**
* 性能分析拦截器,不建议生产使用
*/
@Bean
public PerformanceInterceptor performanceInterceptor(){
return new PerformanceInterceptor();
}
@Bean
public OptimisticLockerExceptionInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerExceptionInterceptor();
}
/**
* 逻辑删除
*/
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
/**
* 设置属性
*/
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
configuration.setJdbcTypeForNull(JdbcType.NULL);
configuration.setMapUnderscoreToCamelCase(true); //驼峰标识
configuration.setCacheEnabled(false);
configuration.setCallSettersOnNulls( true );
sqlSessionFactory.setConfiguration(configuration);
sqlSessionFactory.setPlugins(new Interceptor[]{
// performanceInterceptor(), //性能分析
optimisticLockerInterceptor(),//乐观锁
paginationInterceptor() //添加分页功能
});
sqlSessionFactory.setGlobalConfig(globalConfiguration());
sqlSessionFactory.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml")); // Mapper包路径
return sqlSessionFactory.getObject();
}
/**
* 设置策略
*/
@Bean
public GlobalConfig globalConfiguration() {
GlobalConfig conf = new GlobalConfig();
DbConfig dbconf = new DbConfig();
dbconf.setIdType(IdType.ID_WORKER_STR);
dbconf.setLogicDeleteValue("D");
dbconf.setLogicNotDeleteValue("A");
dbconf.setDbType(DbType.MYSQL);
dbconf.setFieldStrategy(FieldStrategy.NOT_EMPTY);
conf.setDbConfig(dbconf);
conf.setMetaObjectHandler(new MetaObjectHandlerConfig());
conf.setSqlInjector(sqlInjector());
return conf;
}
}
MybatisPlusConfig
最新推荐文章于 2024-03-26 05:10:04 发布