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();

    }
}

 

posted on 2024-12-13 11:13  CccccDi  阅读(267)  评论(0)    收藏  举报