mybatis-plus代码生成器,mybatis-plus3.4自动生成代码,mybatis-plus3.4分页
================================
©Copyright 蕃薯耀 2020-10-21
http://fanshuyao.iteye.com/
一、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
http://fanshuyao.iteye.com/
相关推荐
MyBatis-Plus 是一个基于 MyBatis 的增强工具,提供了许多实用的功能,例如自动分页、条件构造器、主键生成策略等。在实际开发中,了解 MyBatis-Plus 的执行 SQL 分析打印是非常重要的,这可以帮助我们优化 SQL 语句...
同时,"mybatis-plus3.4分页"意味着该版本还支持分页查询,这是大数据量场景下非常重要的功能,MyBatis-Plus提供了一种简便的分页方式,可以避免手动编写复杂的SQL语句。 【标签】"ieee论文"可能表明这个资源与IEEE...
《SpringBoot与MyBatis-Plus3.4.3.1集成详解及代码生成器实践》 在现代Java开发中,SpringBoot以其简洁的配置、快速的启动和强大的功能深受开发者喜爱。而MyBatis-Plus(简称MP)作为MyBatis的增强工具,为开发者...
MyBatis-Plus还包含其他实用插件,如自动代码生成,进一步提升开发效率。 3. 平台设计与实现 3.1 用户模块 用户模块主要涉及用户的注册、登录、密码重置等功能。SpringSecurity可以实现用户认证和授权,确保用户...
- 整合MyBatis-Plus进行高效数据库操作。 在学习过程中,实践是检验理解的重要标准。建议读者结合代码示例动手实践,不断巩固和提高。随着对Spring Boot的理解加深,你可以尝试更复杂的项目,如微服务架构、云原生...
- **模板引擎支持**:支持模板引擎,可以根据项目需求自定义代码生成模板。 #### 3.2 分页插件 - **简化分页处理**:基于MyBatis的物理分页,开发者只需简单配置即可实现分页查询。 - **多数据库支持**:支持多种...
- **反向工程**:学习使用工具自动生成实体类和映射文件。 ##### 3.7 扩展技术 ###### 3.7.1 SCM工具和工程管理工具 - **SVN服务器的安装和配置**:掌握Subversion(SVN)服务器的安装配置步骤,包括代码库的创建...