`

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

阅读更多

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/

 

1
0
分享到:
评论

相关推荐

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...

    mybatis-plus代码生成器模版代码

    在使用Mybatis-Plus代码生成器前,需要确保已引入Mybatis-Plus的依赖。通常在Maven或Gradle项目中,会在pom.xml或build.gradle文件中添加对应的依赖项。例如,对于Maven项目,可以在pom.xml中添加以下依赖: ```xml...

    非常好用的mybatis-plus代码生成器

    总的来说,Mybatis-Plus代码生成器是Java开发中的得力助手,通过自动化的方式减少了重复劳动,提升了开发效率。同时,它的灵活性也允许开发者根据实际需求进行定制,适应各种项目场景。结合`pom.xml`和`src`目录中的...

    mybatis-plus代码生成器配置文档

    本文档详细介绍了MyBatis-Plus代码生成器的配置方法,包括数据源配置、数据库表配置、包名配置、模板配置、全局策略配置和注入配置等。 首先,我们需要了解MyBatis-Plus代码生成器的几个核心配置类: 1. ...

    mybatis-plus自动生成代码(包含swaager注解)

    在本项目中,"mybatis-plus自动生成代码(包含swaager注解)" 意味着我们将探讨如何利用 MyBatis-Plus 的代码生成器来创建实体类、Service、Mapper、XML 文件,并且这些生成的代码还将集成 Swagger 注解,以便于 API ...

    Mybatis-plus自动生成代码

    首先,我们要理解Mybatis-plus代码生成器的基本原理。它通过读取数据库中的表结构信息,然后按照预设的模板生成对应的Java实体类、Mapper接口、Mapper XML文件以及Service和Controller层的代码。这样,我们就不需要...

    MyBatis-Plus 的官方示例(mybatis-plus-samples-master.zip)

    mybatis-plus-sample-generator: 代码生成器示例 mybatis-plus-sample-crud: 完整 CRUD 示例 mybatis-plus-sample-wrapper: 条件构造器示例 mybatis-plus-sample-pagination: 分页功能示例 mybatis-plus-sample-...

    mybatis-plus 达梦 代码生成

    标题"mybatis-plus 达梦 代码生成"表明了本文将要讨论的是如何使用Mybatis-Plus框架结合达梦数据库来自动生成代码。Mybatis-Plus是Mybatis的一个增强工具,它在Mybatis的基础上做了很多简化操作,如自动CRUD(创建、...

    mybatis-plus代码生成器代码.rar

    而“mybatis-plus代码生成器”则是MyBatis-Plus库中的一个重要组成部分,用于自动生成常见的Java代码,包括Controller、DAO、Mapper、Service、ServiceImpl和Entity类,大大减少了手动编写这些重复性工作的负担。...

    mybatis-plus-boot-starter-3.4.3.3.jar

    mybatis-plus-boot-starter.jar 各个版本下载, SpringBoot 集成 MybatisPlus jar 包下载, Mybatis-Plus(简称MP)是一个基于MyBatis的增强工具库,它简化了与数据库的交互操作并提供了一系列增强功能,使开发者...

    MyBatis-Plus入门+MyBatis-Plus文档手册 中文pdf高清版.rar

    特性:无侵入、损耗小、强大的CRUD操作,支持lambda 形势调用、支持多种数据库,支持主键自动生成、支持ActiveRecord模式,支持自定义全局通用操作、支持关键词自动转义,内置代码生成器、内置分页插件、内置性能...

    mybatis-plus 代码生成器

    在本项目中,我们关注的是 "mybatis-plus 代码生成器",这是一个强大的工具,能够自动生成基于 MyBatis-Plus 的实体类、Mapper 接口及实现、XML 映射文件,从而极大地提高了开发效率,减少了手动编写重复代码的时间...

    mybatis-plus代码自动生成工具

    这个“mybatis-plus代码自动生成工具”则是专门针对Mybatis-Plus的辅助开发工具,能够自动生成Model、Mapper、Mapper XML、Service以及Controller等各类基础代码,帮助开发者快速构建项目结构。 1. **MyBatis-Plus...

    mybatis-plus自定义模板.zip

    要自定义Mybatis-Plus的模板,首先需要了解Mybatis-Plus代码生成器的工作原理。它通过解析数据库表信息,使用预先定义好的模板生成对应的Java代码。这些模板通常位于`templates`目录下,包括实体类模板、Mapper接口...

    mybatis-plus代码生成器

    "mybatis-plus代码生成器"是一个关键特性,它的核心作用在于根据数据库表的信息自动生成对应的Java代码。通过配置,你可以指定数据库连接信息,选择需要生成代码的表,然后生成的代码将包括以下部分: 1. **实体类...

    mybatis-plus 实践及架构原理

    Mybatis-Plus是一个Mybatis的增强工具,在保留Mybatis原有特性的同时,提供了很多便捷的功能,如代码生成器、分页插件等,极大地提高了开发的效率,特别是在处理单表操作时。 2. Mybatis-Plus的核心功能: - 自动...

    mybatis,mybatis-plus代码生成器

    在下载的压缩包"mybatis,mybatis-plus代码生成器"中,可能包含了以下内容: 1. MyBatis Generator的配置文件(generatorConfig.xml):这个文件定义了数据库连接信息、需要生成代码的表、生成的Java类模板等。 2. ...

    oracle 结合 mybatis-plus 逆向工程生成代码,以便大家使用

    7. **扩展性**: MyBatis-Plus 提供的不仅仅是基础的 CRUD 功能,还有分页查询、条件构造器(QueryWrapper)等高级特性,使得代码更加简洁和高效。 总之,Oracle 结合 MyBatis-Plus 的逆向工程是 Java 开发中的一个...

    mybatis-plus-boot-starter-3.5.1-API文档-中文版.zip

    赠送源代码:mybatis-plus-boot-starter-3.5.1-sources.jar; 赠送Maven依赖信息文件:mybatis-plus-boot-starter-3.5.1.pom; 包含翻译后的API文档:mybatis-plus-boot-starter-3.5.1-javadoc-API文档-中文(简体)版...

    spring boot 集成swagger+knife4j,集成mybatis-plus和代码生成器

    spring boot快速上手示例,集成了swagger+knife4j接口文档,集成mybatis-plus持久化,统一的数据返回封装,集成mybatis-plus-generator代码生成器,加入了lombok框架,一个完成的sping boot 示例项目,简单易上手

Global site tag (gtag.js) - Google Analytics