SpringBoot使用mybatis-plus代码生成器且xml文件生成在resource文件下

SpringBoot使用mybatis-plus代码生成器且xml文件生成在resource文件下


注意

适用版本:mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容!3.5.1 以下的请参考 代码生成器旧

一、Pom依赖

		<!--mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
		<!--MP代码生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!-- 添加 模板引擎 依赖 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>

二、核心代码

    @Test
    void test1() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/" + "library" + "?&useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai", "root", "123456")
                .globalConfig(builder -> {
                    builder.author("licy")
                            .fileOverride()//覆盖已生成文件	默认值:false
                            .dateType(DateType.ONLY_DATE)//设置日期为Date
                            //启用swagger
                            //.enableSwagger()
                            //指定输出目录
                            .outputDir(System.getProperty("user.dir") + "/src/main/java");
                })
                .packageConfig(builder -> {
                    builder.entity("entity")//实体类包名
                            .parent("com.example.demo")//父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
                            .controller("controller")//控制层包名
                            .mapper("dao")//mapper层包名
                            //.other("dto")//生成dto目录 可不用
                            .service("service")//service层包名
                            .serviceImpl("service.impl")//service实现类包名
                            //自定义mapper.xml文件输出目录
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper"));
                })
                .strategyConfig(builder -> {
                    //设置要生成的表名
                    builder
                            .addInclude("system_user")//设置表名称
                            //.addExclude("system_user")//增加表排除匹配(内存过滤)	include 与 exclude 只能配置一项
                            //.addTablePrefix("sys_")//设置表前缀过滤
                            .entityBuilder()
                            .enableLombok()
                            .enableChainModel()
                            .naming(NamingStrategy.underline_to_camel)//数据表映射实体命名策略:默认下划线转驼峰underline_to_camel
                            .columnNaming(NamingStrategy.underline_to_camel)//表字段映射实体属性命名规则:默认null,不指定按照naming执行
                            .idType(IdType.AUTO)//添加全局主键类型
                            .formatFileName("%s")//格式化实体名称,%s取消首字母I,
                            .mapperBuilder()
                            .enableMapperAnnotation()//开启mapper注解
                            .enableBaseResultMap()//启用xml文件中的BaseResultMap 生成
                            .enableBaseColumnList()//启用xml文件中的BaseColumnList
                            .formatMapperFileName("%sMapper")//格式化Dao类名称
                            .formatXmlFileName("%sMapper")//格式化xml文件名称
                            .serviceBuilder()
                            .formatServiceFileName("%sService")//格式化 service 接口文件名称
                            .formatServiceImplFileName("%sServiceImpl")//格式化 service 接口文件名称
                            .controllerBuilder()
                            .enableRestStyle();
                })
//                .injectionConfig(consumer -> {
//            Map<String, String> customFile = new HashMap<>();
//            // 配置DTO(需要的话)但是需要有能配置Dto的模板引擎,比如freemarker,但是这里我们用的VelocityEngine,因此不多作介绍
//            customFile.put("DTO.java", "/templates/entityDTO.java.ftl");
//            consumer.customFile(customFile);
//           })
                .execute();
    }

三、效果

在这里插入图片描述

Mybatis-Plus Generator是基于Mybatis-Generator的扩展,支持自定义代码生成器模板。 自定义模板的参数设置步骤如下: 1. 新建自定义模板文件Mybatis-Plus Generator的classpath:templates目录下新建自定义模板文件,例如在该目录下新建一个MyMapper.xml.vm文件。 2. 在代码生成器配置文件中配置自定义模板路径 在代码生成器的配置文件中配置自定义模板路径,在该文件中找到templateEngine节点下的velocityTemplatePath节点,并将其值设置为自定义模板文件所在目录的绝对路径。 例如: ``` <templateEngine> <type>velocity</type> <velocity> <properties> <property> <name>file.resource.loader.path</name> <value>/Users/username/mybatis-plus-generator/templates</value> </property> </properties> </velocity> </templateEngine> ``` 3. 设置自定义模板参数 在自定义模板文件中,使用Velocity模板语言来设置自定义参数。例如,在MyMapper.xml.vm文件中添加以下内容: ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="$packageName.$moduleName.mapper.$entityNameMapper"> <resultMap id="BaseResultMap" type="$packageName.$moduleName.entity.$entityName"> #foreach($column in $table.columns) <result column="$column.columnName" property="$column.propertyName" jdbcType="$column.jdbcType" /> #end </resultMap> </mapper> ``` 在该模板中,使用了$packageName、$moduleName、$entityName等参数,这些参数需要在代码生成器的配置文件中进行设置。 在代码生成器的配置文件中找到strategyConfig节点下的superEntityClass、entityLombokModel、entityColumnConstant、entityBuilderModel、controllerMappingHyphenStyle、versionFieldName、logicDeleteFieldName、tablePrefix、fieldPrefix、include、exclude、entityTableFieldAnnotationEnable等节点,将其值设置为需要的参数值。 例如: ``` <strategyConfig> <superEntityClass>com.baomidou.mybatisplus.extension.activerecord.Model</superEntityClass> <entityLombokModel>true</entityLombokModel> <entityColumnConstant>true</entityColumnConstant> <entityBuilderModel>true</entityBuilderModel> <controllerMappingHyphenStyle>true</controllerMappingHyphenStyle> <versionFieldName>version</versionFieldName> <logicDeleteFieldName>deleted</logicDeleteFieldName> <tablePrefix>sys_</tablePrefix> <fieldPrefix>sys_</fieldPrefix> <include>sys_user,sys_role,sys_permission</include> <exclude>sys_log</exclude> <entityTableFieldAnnotationEnable>true</entityTableFieldAnnotationEnable> </strategyConfig> ``` 以上是自定义模板的参数设置步骤,按照这些步骤进行设置即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和烨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值