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/