mybatis-plus代码生成

一、示范代码

package com.cd.selftestcode;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
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.rules.NamingStrategy;

class SelfTestCodeApplicationTests {
    //    DriverName("com.mysql.cj.jdbc.Driver");
    public static final String DRIVAER_NAME = "com.mysql.cj.jdbc.Driver";
    //        tUsername("root");
    public static final String USER_NAME = "root";
    //        Password("mysql");
    public static final String PSW = "mysql";
    //        Url
    public static final String URL = "jdbc:mysql://192.168.0.108:13306/database";
    //最顶级包名,生成的所有的顶级包名
    public static final String PARENT_PACKAGE = "com.cd";
    //controller包包
    public static final String CONTROLLER_PACKAGE = "controller";
    //service包名
    public static final String SERVICE_PACKAGE = "service";
    //service.iml包名
    public static final String SERVICE_IMPL_PACKAGE = "service.impl";
    //mapper包名
    public static final String MAPPER_PACKAGE = "mapper";
    //entity包名
    public static final String ENTITY_PACKAGE = "po";
    //xml包名
    public static final String XML_PACKAGE = "xml";
    //生成文件目录
    public static final String OUT_FILE_PATH="D:\\tempProject\\src\\main\\java";
    // 开启swagger2模式
    public static final Boolean SWAGGER_ENABLE = true;
    // 是否覆盖已有文件
    public static final Boolean RECOVER_ENABLE = true;
    //DTO名字格式
    public static final String DTO_NAME_FORMAT = "%sDTO";
    public static final String DTO_BASE = PARENT_PACKAGE + ".base.BaseDTO";

    //PO名字格式
    public static final String PO_NAME_FORMAT = "%sPO";
    public static final String PO_BASE = PARENT_PACKAGE + ".base.BasePO";
    //query名字格式
    public static final String QUERY_NAME_FORMAT = "%sQuery";
    public static final String QUERYO_BASE = PARENT_PACKAGE + ".BaseQuery";
    //数据库中的表名
    public static final String[] TABLE_NAMES = {"表名1","表名2"};

    /**
     * 生成DTO\PO\QUERY以及service\controller\mybatisplus\mapper\mapper.xml代码
     */
    public static void main(String[] args) {
    	//生成DTO
        generatorMybatisAndDTO();
        //生成query
        generatorMybatisAndQuery();
        //生成po和mapper
        generatorMybatisAndPO();
    }

    /**
     * 数据源配置
     */
    private static DataSourceConfig dataSource() {
        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);  // mysql生成用DbType.MYSQL
        dsc.setDriverName(DRIVAER_NAME);
        dsc.setUsername(USER_NAME);
        dsc.setPassword(PSW);
        dsc.setUrl(URL);
        return dsc;
    }

    /**
     * 包名配置
     */
    private static PackageConfig packageConfig() {
        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent(PARENT_PACKAGE);   // 父包名
        pc.setController(CONTROLLER_PACKAGE);     // Controller包名
        pc.setService(SERVICE_PACKAGE);           // Service包名
        pc.setServiceImpl(SERVICE_IMPL_PACKAGE);  // Service Impl包名
        pc.setMapper(MAPPER_PACKAGE);             // Mapper包名
        pc.setEntity(ENTITY_PACKAGE);             // Entity包名
        pc.setXml(XML_PACKAGE);                        // xml包名
        return pc;
    }

    /**
     * 全局配置
     */
    private static GlobalConfig globalConfig() {
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setSwagger2(SWAGGER_ENABLE);         // 开启swagger2模式
        gc.setOutputDir(OUT_FILE_PATH);  // 生成文件存放的位置
        gc.setFileOverride(RECOVER_ENABLE);     // 是否覆盖已有文件
        gc.setActiveRecord(false);    // 开启ActiveRecord模式,默认false
        gc.setEnableCache(false);     // 是否在xml中添加二级缓存配置,默认false
        gc.setBaseResultMap(true);    // 开启BaseResultMap(通用查询映射结果)
        gc.setBaseColumnList(true);   // 开启baseColumnList(通用查询结果列)
        gc.setAuthor("cd");          // 开发人员
        // 自定义文件命名,注意 %s 会自动填充表实体属性(各层文件名称方式,例如:%sAction生成UserAction, %s为占位符)
        gc.setControllerName("%sController");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");
        gc.setEntityName("%sPO");
        return gc;
    }

    /**
     * 策略配置
     */
    private static StrategyConfig strategy() {
        StrategyConfig strategy = new StrategyConfig();
        strategy.setEntityBooleanColumnRemoveIsPrefix(true);//boolean类型去掉is开头
        strategy.setLogicDeleteFieldName("delete_flag");
        strategy.setTablePrefix(""); // 去掉表名前缀
        strategy.setNaming(NamingStrategy.underline_to_camel); // 表名生成策略(underline_to_camel:下划线转驼峰命名)
        strategy.setInclude(TABLE_NAMES); // 表名
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setSuperControllerClass(PARENT_PACKAGE + ".base.AbstractBaseController");// 自定义继承的Controller类全称,带包名
        strategy.setSuperServiceClass(PARENT_PACKAGE+".base.BaseService");
        strategy.setSuperEntityClass(PARENT_PACKAGE + ".base.BasePO");// 自定义继承的实体类全称,带包名
        strategy.setEntityLombokModel(true);    // 实体类是否为lombok模型(默认false)
        strategy.setRestControllerStyle(true);  // 生成 <code>@RestController</code> 控制器
        strategy.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper"); // 自定义继承的Mapper类全称,带包名
        strategy.setChainModel(true); //生成build代码
        return strategy;
    }

    private static void generatorMybatisAndPO() {
        // 生成器
        AutoGenerator mpg = new AutoGenerator();

        // 包配置
        mpg.setPackageInfo(packageConfig().setEntity("po"));
        // 全局配置
        mpg.setGlobalConfig(globalConfig().setEntityName(PO_NAME_FORMAT));

        // 数据源配置
        mpg.setDataSource(dataSource());

        // 策略配置
        mpg.setStrategy(strategy().setSuperEntityClass(PO_BASE));
        // 执行生成
        mpg.execute();
    }

    private static void generatorMybatisAndQuery() {
        // 生成器
        AutoGenerator mpg = new AutoGenerator();

        // 包配置
        mpg.setPackageInfo(packageConfig().setEntity("query"));

        // 全局配置
        mpg.setGlobalConfig(globalConfig().setEntityName(QUERY_NAME_FORMAT));

        // 数据源配置
        mpg.setDataSource(dataSource());

        // 策略配置
        mpg.setStrategy(strategy().setSuperEntityClass(QUERYO_BASE).setChainModel(true).setEntityLombokModel(false).setLogicDeleteFieldName(null));
        // 执行生成
        mpg.execute();
    }

    private static void generatorMybatisAndDTO() {
        // 生成器
        AutoGenerator mpg = new AutoGenerator();

        // 包配置
        mpg.setPackageInfo(packageConfig().setEntity("dto"));

        // 全局配置
        mpg.setGlobalConfig(globalConfig().setEntityName(DTO_NAME_FORMAT));

        // 数据源配置
        mpg.setDataSource(dataSource());

        // 策略配置                               实体基类                建造者模式              lombok是否启用            逻辑删除字段
        mpg.setStrategy(strategy().setSuperEntityClass(DTO_BASE).setChainModel(true).setEntityLombokModel(false).setLogicDeleteFieldName(null));
        // 执行生成
        mpg.execute();
    }

}

因为上面代码中配置了service\controller\po\dto\query的基类,所以要在生成的代码中新建该基类,如果不需要基类可不配置

二、pom依赖


 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/>
    </parent>
 <dependencies>
       

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

     
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis.plus.version}</version>
        </dependency>

        <!--mybatis-plus代码生成器 相关依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>${mybatis.plus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
            <version>${mybatis.plus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-annotation</artifactId>
            <version>${mybatis.plus.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

        <!-- druid阿里巴巴数据库连接池 -->
        <!--<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.20</version>
        </dependency>-->
        <!--<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.22</version>
        </dependency>-->

        <!-- MySql数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.28.0</version>
        </dependency>
        <!--@Data注解-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

三、使用生成代码的项目的依赖

示例项目为结合mybatis-plus生成的代码,添加一些配置,以达到可以自动生成crud代码的示例,以及swagger、po与dto转换

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值