Springboot版本:2.3.12.RELEASE
1.maven依赖
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--数据库依赖-->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<!--MyBatis-plus 相关bengin-->
<!--MyBatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<!--模板引擎依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<!--MyBatis-plus 相关end-->
2.配置文件数据源信息
##数据源基础配置 spring.datasource.druid.master.name = master spring.datasource.druid.master.url = jdbc:postgresql://localhost:5432/test1?useUnicode=true&characterEncoding=UTF-8 spring.datasource.druid.master.username = postgres spring.datasource.druid.master.password = 123456 spring.datasource.druid.master.driver-class-name = org.postgresql.Driver spring.datasource.druid.master.max-active = 20 spring.datasource.druid.master.initial-size = 1 spring.datasource.druid.master.max-wait = 60000 spring.datasource.druid.master.min-idle = 1 spring.datasource.druid.master.time-between-eviction-runs-millis = 60000 spring.datasource.druid.master.min-evictable-idle-time-millis = 300000 spring.datasource.druid.master.validation-query = SELECT 1 spring.datasource.druid.master.test-on-borrow = false spring.datasource.druid.master.test-while-idle = true spring.datasource.druid.master.test-on-return = false spring.datasource.druid.master.async-init = true spring.datasource.druid.master.filter.wall.enabled = true spring.datasource.druid.master.filter.wall.db-type = postgres spring.datasource.druid.master.filter.wall.config.update-where-none-check = true spring.datasource.druid.master.filter.wall.config.delete-where-none-check = true spring.datasource.druid.master.filter.wall.config.multi-statement-allow = true spring.datasource.druid.master.filter.wall.config.strict-syntax-check = false spring.datasource.druid.master.filter.wall.config.alter-table-allow = false spring.datasource.druid.master.filter.wall.config.drop-table-allow = false spring.datasource.druid.db1.name = db1 spring.datasource.druid.db1.url = jdbc:postgresql://localhost:5432/test?useUnicode=true&characterEncoding=UTF-8 spring.datasource.druid.db1.username = postgres spring.datasource.druid.db1.password = 123456 spring.datasource.druid.db1.driver-class-name = org.postgresql.Driver spring.datasource.druid.db1.max-active = 20 spring.datasource.druid.db1.initial-size = 5 spring.datasource.druid.db1.max-wait = 60000 spring.datasource.druid.db1.min-idle = 5 spring.datasource.druid.db1.time-between-eviction-runs-millis = 60000 spring.datasource.druid.db1.min-evictable-idle-time-millis = 300000 spring.datasource.druid.db1.validation-query = SELECT 1 spring.datasource.druid.db1.test-on-borrow = false spring.datasource.druid.db1.test-while-idle = true spring.datasource.druid.db1.test-on-return = false spring.datasource.druid.db1.pool-prepared-statements = true spring.datasource.druid.db1.max-open-prepared-statements = 20 spring.datasource.druid.db1.async-init = true
mybatis-plus.mapper-locations=classpath:mapper/*/*.xml
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
3.配置数据源信息
- master主数据源信息
@Configuration @MapperScan(basePackages = {"com.xxx.xxx.mapper.master","com.xxx.xxx.xxx.mapper"}, sqlSessionFactoryRef = "mainSqlSessionFactory") public class MasterMybatisPlusConfig { @Bean("mainSqlSessionTemplate") public SqlSessionTemplate mainSqlSessionTemplate( @Qualifier("mainSqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Bean("mainSqlSessionFactory") @Primary public SqlSessionFactory sqlSessionFactory(@Qualifier("mainDataSource") DataSource dataSource,@Qualifier("mainPaginationInterceptor") PaginationInterceptor paginationInterceptor) throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/master/*.xml")); Interceptor[] plugins = new Interceptor[]{paginationInterceptor}; sqlSessionFactoryBean.setPlugins(plugins); return sqlSessionFactoryBean.getObject(); } @Bean("mainPaginationInterceptor") public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } @Bean("mainDataSource") public DataSource mainDataSource(@Qualifier("mainDataSourceProperties") DataSourceProperties dataSourceProperties) { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(dataSourceProperties.getDriverClassName()); druidDataSource.setUrl(dataSourceProperties.getUrl()); druidDataSource.setName(dataSourceProperties.getName()); druidDataSource.setUsername(dataSourceProperties.getUsername()); druidDataSource.setPassword(dataSourceProperties.getPassword()); return druidDataSource; } @Bean("mainDataSourceProperties") @ConfigurationProperties(prefix = "spring.datasource.druid.master") public DataSourceProperties mainDataSourceProperties() { return new DataSourceProperties(); } }
- bd1其他数据源信息
@Configuration @MapperScan(basePackages = "com.xxx.xxx.mapper.db1", sqlSessionFactoryRef = "secondSqlSessionFactory") public class Db1MybatisPlusConfig { @Bean("secondSqlSessionTemplate") public SqlSessionTemplate secondSqlSessionTemplate( @Qualifier("secondSqlSessionFactory") SqlSessionFactory sessionfactory) { return new SqlSessionTemplate(sessionfactory); } @Bean("secondSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("secondDataSource") DataSource dataSource, @Qualifier("secondPaginationInterceptor")PaginationInterceptor paginationInterceptor) throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db1/*.xml")); Interceptor[] plugins = new Interceptor[]{paginationInterceptor}; sqlSessionFactoryBean.setPlugins(plugins); return sqlSessionFactoryBean.getObject(); } @Bean("secondPaginationInterceptor") public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } @Bean("secondDataSource") public DataSource getSecondDataSource(@Qualifier("secondDataSourceProperties") DataSourceProperties dataSourceProperties) { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(dataSourceProperties.getDriverClassName()); druidDataSource.setUrl(dataSourceProperties.getUrl()); druidDataSource.setName(dataSourceProperties.getName()); druidDataSource.setUsername(dataSourceProperties.getUsername()); druidDataSource.setPassword(dataSourceProperties.getPassword()); return druidDataSource; } @Bean("secondDataSourceProperties") @ConfigurationProperties(prefix = "spring.datasource.druid.db1") public DataSourceProperties secondDataSourceProperties() { return new DataSourceProperties(); } }
- 通用数据源配置信息类
public class DataSourceProperties { String name; String url; String username; String password; String driverClassName; public String getName() { return name; } @Value("name") public void setName(String name) { this.name = name; } public String getUrl() { return url; } @Value("url") public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } @Value("username") public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } @Value("password") public void setPassword(String password) { this.password = password; } public String getDriverClassName() { return driverClassName; } @Value("driver-class-name") public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } @Override public String toString() { return "DataSourceProperties{" + "name='" + name + '\'' + ", url='" + url + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + ", driverClassName='" + driverClassName + '\'' + '}'; } }
- 主类增加相关注解
@EnableConfigurationProperties @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class})
4.目录结构


5.附自动代码生成代码
public class MybatisPlusCodeGenerator { public static void main(String[] args) { // 1、创建代码生成器 AutoGenerator mpg = new AutoGenerator(); // 2、全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor("caideyin"); gc.setOpen(false); //生成后是否打开资源管理器 gc.setFileOverride(false); //重新生成时文件是否覆盖 gc.setServiceName("%sService"); //去掉Service接口的首字母I gc.setIdType(IdType.AUTO); //主键策略 gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型 gc.setSwagger2(true);//开启Swagger2模式 mpg.setGlobalConfig(gc); // 3、数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:postgresql://localhost:5432/test"); dsc.setDriverName("org.postgresql.Driver"); dsc.setUsername("postgres"); dsc.setPassword("123456"); dsc.setDbType(DbType.POSTGRE_SQL); mpg.setDataSource(dsc); // 4、包配置 PackageConfig pc = new PackageConfig(); pc.setModuleName(null); //模块名 pc.setParent("com.xxx.xxx"); pc.setController("controller"); pc.setEntity("pojo"); pc.setService("service"); pc.setMapper("mapper.master"); mpg.setPackageInfo(pc); // 5、策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setInclude("alert_report");//对哪一张表生成代码 strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略 strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀 strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略 strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 strategy.setRestControllerStyle(true); //restful api风格控制器 strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符 mpg.setStrategy(strategy); // 6、执行 mpg.execute(); } }
浙公网安备 33010602011771号