zoukankan      html  css  js  c++  java
  • mybatis-plus代码生成器,mybatis-plus3.4自动生成代码,mybatis-plus3.4分页

    mybatis-plus代码生成器,mybatis-plus3.4自动生成代码,mybatis-plus3.4分页

    ================================

    ©Copyright 蕃薯耀 2020-10-21

    https://www.cnblogs.com/fanshuyao/

    一、Jar包依赖

        <properties>
            <!-- 构建时编码 -->    
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <!-- 输出时编码 -->
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <!-- JDK版本 -->
            <java.version>1.8</java.version>
            <mybatisPlus.version>3.4.0</mybatisPlus.version>
            <shardingsphere.version>4.1.1</shardingsphere.version>
        </properties>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.2</version>
            </dependency>
            
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
            </dependency>
            
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.13</version>
            </dependency>
            
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatisPlus.version}</version>
            </dependency>
            
            <!--mybatis-plus 码生成器 添加 模板引擎依赖 这个需要增加模板引擎依赖,如freemarker-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId>
                <version>${mybatisPlus.version}</version>
            </dependency>
            
            
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <scope>provided</scope>
            </dependency>

    二、代码生成器代码:

    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.commons.lang3.StringUtils;
    import org.apache.log4j.Logger;
    
    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.generator.AutoGenerator;
    import com.baomidou.mybatisplus.generator.InjectionConfig;
    import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
    import com.baomidou.mybatisplus.generator.config.GlobalConfig;
    import com.baomidou.mybatisplus.generator.config.PackageConfig;
    import com.baomidou.mybatisplus.generator.config.StrategyConfig;
    import com.baomidou.mybatisplus.generator.config.converts.OracleTypeConvert;
    import com.baomidou.mybatisplus.generator.config.rules.DateType;
    import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
    import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
    import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
    import com.lqy.ss.utils.DateUtils;
    import com.lqy.ss.utils.StrUtils;
    
    public class CodeGenerator {
    
        private static Logger log = Logger.getLogger(CodeGenerator.class);
        
        private static final String jdbcUserName = "root";
        private static final String jdbcPassword = "root";
        
        //表名,可以设置多个,通过英文逗号分隔
        //数据库用户密码,必须使用表的所有者(Owner)
        private static final String tables = "my_user";
        private static final String moduleName = "shardingSphere.";//模块名称,分业务,不要漏最后面一个点
        
        private static final String tablePrefix = "";//表名前缀
        
        /**
         * 代码生成器的配置常量
         */
        private static final String outPutDir = "/src/main/java";
        //Oracle:jdbc:oracle:thin:@192.168.110.2:1521:ORAPLAN
        //mysql:jdbc:mysql://localhost:3306/mydbone?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&pinGlobalTxToPhysicalConnection=true&autoReconnect=true
        private static final String jdbcUrl = "jdbc:mysql://localhost:3306/sh1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&pinGlobalTxToPhysicalConnection=true&autoReconnect=true";
        
        //oracle.jdbc.OracleDriver
        //oracle.jdbc.driver.OracleDriver
        //com.mysql.cj.jdbc.Driver
        private static final String jdbcDriverClassName = "com.mysql.jdbc.Driver";
        
        private static final String parentPackage = "com.xxx.ss.biz";
        
        private static final String authorName = jdbcUserName;//作者
        
        private static final String mapperPattern = "%sDao";//dao文件命名格式
        private static final String mapperName = moduleName + "dao";
        private static final String xmlName = mapperName;
        
        private static final String serviceNamePattern = "%sService";//Service文件命名格式
        private static final String serviceName =  moduleName + "service";
        private static final String implName =  moduleName + "service.impl";
        private static final String pojoName =  moduleName + "entity";
        private static final String controllerName =  moduleName + "controller";
        
        
        // 当前工程路径   配合outPutDir使用,例如多模块开发 Demo/test1,Demo/test2
        // projectPath拿到的是Demo路径,把outPutDir设置成/test1即可
        private static final String projectPath = System.getProperty("user.dir");
        
        public static void generator() {
            
            // 全局配置
            GlobalConfig gc = new GlobalConfig();
            gc.setOutputDir(projectPath + outPutDir);
            gc.setAuthor(authorName);
            gc.setBaseResultMap(true);
            gc.setBaseColumnList(true);
            // 覆盖生成的文件
            gc.setFileOverride(true);
            gc.setServiceName(serviceNamePattern);
            gc.setMapperName(mapperPattern);
            gc.setEnableCache(false);//是否在xml中添加二级缓存配置:false不生成
            gc.setOpen(false);//true:生成文件后,自动打开文件夹
            gc.setDateType(DateType.ONLY_DATE);//设置时间类型
            //gc.setSwagger2(true);//设置生成Swagger2 Api注解
            
            // 数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setDbType(DbType.MYSQL);
            
            //设置类型转换,默认不太好
            //这个是Oracle的
            /*
            dsc.setTypeConvert(new OracleTypeConvert() {
    
                @Override
                public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
                    String fileTypeLower = fieldType.toLowerCase();
                    if(fileTypeLower.contains("number")) {
                        //System.out.println("fileTypeLower = " + fileTypeLower);
                        
                        if(fileTypeLower.equals("number")) {//默认长度为38位,占用22个字节空间
                            return DbColumnType.LONG;
                        }
                        if(fileTypeLower.contains(",")) {
                            return DbColumnType.DOUBLE;
                        }else {
                            String num = StrUtils.getNumberText(fileTypeLower);
                            int numInt = Integer.parseInt(num);
                            if(numInt == 1) {
                                return DbColumnType.BYTE;
                            }
                            if(numInt > 1 && numInt <=4) {
                                return DbColumnType.SHORT;
                            }
                            if(numInt > 4 && numInt <=9) {
                                return DbColumnType.INTEGER;
                            }
                            if(numInt > 9 && numInt <=18) {
                                return DbColumnType.LONG;
                            }
                            if(numInt > 18) {
                                return DbColumnType.BIG_DECIMAL;
                            }
                            return DbColumnType.LONG;
                        }
                    }
                    return super.processTypeConvert(globalConfig, fieldType);
                }
            });
            */
            dsc.setUrl(jdbcUrl);
            dsc.setDriverName(jdbcDriverClassName);
            dsc.setUsername(jdbcUserName);
            dsc.setPassword(jdbcPassword);
            // dsc.setSchemaName("public");
            
            
            // 包配置
            PackageConfig pc = new PackageConfig();
            //pc.setModuleName(scanner("模块名"));
            pc.setParent(parentPackage);
            
            pc.setParent(parentPackage);
            pc.setMapper(mapperName);
            pc.setEntity(pojoName);
            pc.setService(serviceName);
            pc.setController(controllerName);
            pc.setServiceImpl(implName);
            pc.setXml(xmlName);
            
            
            
            
            // 策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setNaming(NamingStrategy.underline_to_camel);
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);
            //strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");
            strategy.setEntityLombokModel(false);//设置Lombok模式
            strategy.setRestControllerStyle(true);
            strategy.setControllerMappingHyphenStyle(false);
            // 公共父类
            //strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");
            // 写于父类中的公共字段
            //strategy.setSuperEntityColumns("id");
            strategy.setControllerMappingHyphenStyle(true);
            if(!StringUtils.isBlank(tablePrefix)) {
                strategy.setTablePrefix(tablePrefix);
            }
            //strategy.entityTableFieldAnnotationEnable(true);
            strategy.setEntityTableFieldAnnotationEnable(true);
            strategy.setInclude(tables.toUpperCase().split(","));//Oracle数据,表名一定要大写,且表名要对应创建的用户,否则不生成代码
            
            
            InjectionConfig injectionConfig = new InjectionConfig() {
                
                @Override
                public void initMap() {
                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
                    this.setMap(map);
                }
            };
            
            
         // 代码生成器
            AutoGenerator mpg = new AutoGenerator();
            mpg.setGlobalConfig(gc);
            mpg.setDataSource(dsc);
            mpg.setPackageInfo(pc);
            mpg.setStrategy(strategy);
            mpg.setCfg(injectionConfig);
            mpg.setTemplateEngine(new FreemarkerTemplateEngine());
            mpg.execute();
            log.info("代码生成已经完成。" + DateUtils.formatDateTime(new Date()));
        }
        
        
        public static void main(String[] args) {
            generator();
        }
        
    }

    三、mybatis-plus3.4.0分页配置及Oracle序列增长配置

    mybatis-plus3.4.0的分页发生了变化的,具体如下:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import com.baomidou.mybatisplus.annotation.DbType;
    import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
    import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
    
    @Configuration
    public class MybatisPlusConfig {
    
        private static Logger log = LoggerFactory.getLogger(MybatisPlusConfig.class);
        
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            log.info("初始化分页插件…");
            MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
            mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
            return mybatisPlusInterceptor;
        }
        
        
        /**
         * 注入oracleKeyGenerator,自动生成序列主键
         * @return
         */
        /*
        @Bean
        public OracleKeyGenerator oracleKeyGenerator(){
            log.info("初始化Oracle主键生成策略…");
            return new OracleKeyGenerator();
        }
        */
        
        
    }

    (如果文章对您有帮助,欢迎捐赠,^_^)

    ================================

    ©Copyright 蕃薯耀 2020-10-21

    https://www.cnblogs.com/fanshuyao/

    今天越懒,明天要做的事越多。
  • 相关阅读:
    树莓派使用MJPG-Streamer实现网络监控
    树莓派USB摄像头与camera模块对比
    机器人教程
    win10开始菜单打不开怎么办 win菜单键没反应解决办法
    solr查询语法
    Substance 6 设置 watermark(水印)
    在SWING里嵌入SWT的组件
    solr 5.5.1安装并配置中文分词IKAnalyzer
    [简单]docx4j常用方法小结
    Java串口通信详解
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/13850958.html
Copyright © 2011-2022 走看看