mybatis-plus-generator使用记录(自用)

使用mybatis-plus的代码生成记录

时间: 2023/5/29

使用的依赖

<dependencies>
	<dependency>
	    <groupId>com.baomidou</groupId>
	    <artifactId>mybatis-plus-boot-starter</artifactId>
	    <version>3.5.3.1</version>
	</dependency>

	<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
	<dependency>
	    <groupId>com.baomidou</groupId>
	    <artifactId>mybatis-plus-generator</artifactId>
	    <version>3.5.3</version>
	</dependency>

	<dependency>
	    <groupId>org.apache.velocity</groupId>
	    <artifactId>velocity-engine-core</artifactId>
	    <version>2.3</version>
	</dependency>

</dependencies>


代码生成器代码

DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:3307/pd_auth" ,
                "root" , "liuziyan123")
                // 数据库查询
                .dbQuery(new MySqlQuery())
                // 数据库 schema(部分数据库适用)
                .schema("pd_auth")
                // 类型转换器(默认)
                .typeConvert(new MySqlTypeConvert())
                // 数据库关键字处理器
                .keyWordsHandler(new MySqlKeyWordsHandler())
                .build();
        GlobalConfig globalConfig = new GlobalConfig.Builder()
                .outputDir(System.getProperty("user.dir") + "/src/main/java")
                .author("蜻蜓队长")
                // 时间策略 使用jdk8的新时间类
                .dateType(DateType.TIME_PACK)
                // 注释日期
                .commentDate("yyyy-MM-dd")
                .build();

        PackageConfig packageConfig = new PackageConfig.Builder()
                // 父包名
                .parent("com.rjxy")
                .entity("po")
                .service("service")
                .serviceImpl("service.impl")
                .mapper("mapper")
                // .xml("mapper.xml")
                .controller("controller")
                // 路径配置信息
                .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mappers"))
                .build();
        
        StrategyConfig strategyConfig = new StrategyConfig.Builder()
                // 开启大写命名
                .enableCapitalMode()
                // 开启跳过试图
                .enableSkipView()
                // 禁用sql过滤
                .disableSqlFilter()
                .addInclude("pd_auth_menu" , "pd_auth_resource" , "pd_auth_role" ,
                        "pd_auth_role_authority" , "pd_auth_role_org" , "pd_auth_user" ,
                        "pd_auth_user_role" , "pd_common_login_log" ,
                        "pd_common_opt_log" , "pd_core_org" , "pd_core_station")
                // 实体类配置
                .entityBuilder()
                // 覆盖已生成文件
                .enableFileOverride()
                // 开启lombok模型
                .enableLombok()
                .enableRemoveIsPrefix()
                // 开启生成实体时生成字段注解
                .enableTableFieldAnnotation()
                .naming(NamingStrategy.underline_to_camel)
                .columnNaming(NamingStrategy.underline_to_camel)
                // .superClass("com.rjxy.global.BaseEntity")
				// .addSuperEntityColumns("create_time" , "update_time")
                .idType(IdType.ASSIGN_ID)
                // 控制器配置
                .controllerBuilder()
                .enableFileOverride()
                .enableHyphenStyle()
                .enableRestStyle()
                .formatFileName("%sController")
                // 服务层配置
                .serviceBuilder()
                .enableFileOverride()
                .formatServiceFileName("%sService")
                .formatServiceImplFileName("%sServiceImpl")
                // dao层配置
                .mapperBuilder()
                .enableFileOverride()
                .superClass(BaseMapper.class)
                .mapperAnnotation(Mapper.class)
                .enableBaseResultMap()
                .enableBaseColumnList()
                .formatMapperFileName("%sDao")
                .formatXmlFileName("%sXml")
                .build();


        TemplateConfig templateConfig = new TemplateConfig.Builder()
                .entity("/template/entity.java.vm")
                .mapper("/template/mapper.java.vm")
                .service("/template/service.java.vm")
                .serviceImpl("/template/serviceImpl.java.vm")
                .controller("/template/controller.java.vm")
                .build();

        AutoGenerator generator = new AutoGenerator(dataSourceConfig);
        generator.global(globalConfig)
                .packageInfo(packageConfig)
                .strategy(strategyConfig)
                .template(templateConfig)
                .execute();

代码模板

controller.java.vm

package ${package.Controller};

import org.springframework.web.bind.annotation.RequestMapping;
    #if(${restControllerStyle})
    import org.springframework.web.bind.annotation.RestController;
    #else
    import org.springframework.stereotype.Controller;
    #end
    #if(${superControllerClassPackage})
    import ${superControllerClassPackage};
    #end
import ${package.Service}.${table.serviceName};
import lombok.extern.slf4j.Slf4j;

import javax.annotation.Resource;


/**
 * <p>
 * $!{table.comment} 前端控制器
 * </p>
 *
 * @author ${author}
 * @date  ${date}
 */
@Slf4j
    #if(${restControllerStyle})
    @RestController
    #else
    @Controller
    #end
@RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end")

#if(${kotlin})
class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end

#else
#if(${superControllerClass})
public class ${table.controllerName} extends ${superControllerClass} {
#else
public class ${table.controllerName} {
#end
@Resource
private ${table.serviceName}  ${entity}ServiceImpl;

}
#end

entity.java.vm

package ${package.Entity};

#foreach($pkg in ${table.importPackages})
import ${pkg};
#end
#if(${springdoc})
import io.swagger.v3.oas.annotations.media.Schema;
#elseif(${swagger})
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
#end
#if(${entityLombokModel})
import lombok.Data;
    #if(${chainModel})
    import lombok.experimental.Accessors;
    #end
#end

/**
 * <p>
 * $!{table.comment}
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
#if(${entityLombokModel})
@Data
    #if(${chainModel})
    @Accessors(chain = true)
    #end
#end
#if(${table.convert})
@TableName("${schemaName}${table.name}")
#end
#if(${springdoc})
@Schema(name = "${entity}" , description = "$!{table.comment}")
#elseif(${swagger})
@ApiModel(value = "${entity}对象" , description = "$!{table.comment}")
#end
#if(${superEntityClass})
public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {
#elseif(${activeRecord})
public class ${entity} extends Model<${entity}> {
#elseif(${entitySerialVersionUID})
public class ${entity} implements Serializable{
#else
public class ${entity} {
#end
#if(${entitySerialVersionUID})

private static final long serialVersionUID=1L;
#end
## ----------  BEGIN 字段循环遍历  ----------
#foreach($field in ${table.fields})

    #if(${field.keyFlag})
        #set($keyPropertyName=${field.propertyName})
    #end
    #if("$!field.comment" != "")
        #if(${springdoc})
        @Schema(description = "${field.comment}")
        #elseif(${swagger})
        @ApiModelProperty("${field.comment}")
        #else
        /**
         * ${field.comment}
         */
        #end
    #end
    #if(${field.keyFlag})
        ## 主键
        #if(${field.keyIdentityFlag})
        @TableId(value = "${field.annotationColumnName}" , type = IdType.AUTO)
        #elseif(!$null.isNull(${idType}) && "$!idType" != "")
        @TableId(value = "${field.annotationColumnName}" , type = IdType.${idType})
        #elseif(${field.convert})
        @TableId("${field.annotationColumnName}")
        #end
        ## 普通字段
    #elseif(${field.fill})
        ## -----   存在字段填充设置   -----
        #if(${field.convert})
        @TableField(value = "${field.annotationColumnName}" , fill = FieldFill.${field.fill})
        #else
        @TableField(fill = FieldFill.${field.fill})
        #end
    #elseif(${field.convert})
    @TableField("${field.annotationColumnName}")
    #end
    ## 乐观锁注解
    #if(${field.versionField})
    @Version
    #end
    ## 逻辑删除注解
    #if(${field.logicDeleteField})
    @TableLogic
    #end
private ${field.propertyType} ${field.propertyName};
#end
## ----------  END 字段循环遍历  ----------
#if(!${entityLombokModel})
    #foreach($field in ${table.fields})
        #if(${field.propertyType.equals("boolean")})
            #set($getprefix="is")
        #else
            #set($getprefix="get")
        #end

    public ${field.propertyType} ${getprefix}${field.capitalName}(){
            return ${field.propertyName};
            }

        #if(${chainModel})
        public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}){
        #else
        public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
        #end
            this.${field.propertyName} = ${field.propertyName};
        #if(${chainModel})
                return this;
        #end
            }
    #end
    ## --foreach end---
#end
## --end of #if(!${entityLombokModel})--
#if(${entityColumnConstant})
    #foreach($field in ${table.fields})

    public static final String ${field.name.toUpperCase()} ="${field.name}";
    #end
#end
#if(${activeRecord})

@Override
public Serializable pkVal(){
    #if(${keyPropertyName})
            return this.${keyPropertyName};
    #else
            return null;
    #end
        }
#end
#if(!${entityLombokModel})

@Override
public String toString() {
        return "${entity}{" +
    #foreach($field in ${table.fields})
        #if($!{foreach.index}==0)
                "${field.propertyName} = " + ${field.propertyName} +
        #else
                ", ${field.propertyName} = " + ${field.propertyName} +
        #end
    #end
        "}";
        }
#end
        }

mapper.java.vm

package ${package.Mapper};

import ${package.Entity}.${entity};
import ${superMapperClassPackage};
#if(${mapperAnnotationClass})
import ${mapperAnnotationClass.name};
#end

/**
 * <p>
 * $!{table.comment} Mapper 接口
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
#if(${mapperAnnotationClass})
@${mapperAnnotationClass.simpleName}
#end
#if(${kotlin})
interface ${table.mapperName} : ${superMapperClass}<${entity}>
#else
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {

}
#end


service.java.vm

package ${package.Service};

import ${package.Entity}.${entity};
import ${superServiceClassPackage};

/**
 * <p>
 * $!{table.comment} 服务类
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
#if(${kotlin})
interface ${table.serviceName} : ${superServiceClass}<${entity}>
#else
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {

        }
#end

serviceImpl.java.vm

package ${package.ServiceImpl};

import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
import ${package.Service}.${table.serviceName};
import ${superServiceImplClassPackage};
import org.springframework.stereotype.Service;

/**
 * <p>
 * $!{table.comment} 服务实现类
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
@Service
#if(${kotlin})
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {

        }
#else
public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}>implements ${table.serviceName} {

}
#end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值