mybatis-plus-generator, mybatis-plus代码生成器(新)3.5.2 ,设置自定义模板


参考 mp官方文档

构建

maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.exampleGenerator</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>

        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
        </dependency>

        <!--Velocity-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>
    </dependencies>

</project>

代码生成

package org.example;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @auther:Wangxl
 * @Emile:[email protected]
 * @Time:2022/05/22 16:50
 */
public class Generator {
    
    

    /**
     * 数据源配置
     */
    private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
//            .Builder("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;MODE=MYSQL", "sa", "");
            .Builder("jdbc:mysql://localhost:3306/cloud_user", "root", "root");

    public static void main(String[] args) {
    
    
        FastAutoGenerator.create(DATA_SOURCE_CONFIG)
                // 全局配置
                .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?")).fileOverride()
                .outputDir(System.getProperty("user.dir")+"/src/main/java"))
                // 包配置
                .packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?"))
                .service("service")
                .serviceImpl("service.impl")
                .controller("controller")
                .mapper("mapper")
                .xml("mapper")
                .equals("entity"))
                // 策略配置
                .strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                        .addTablePrefix("tb_")//设置过滤表前缀
                        .controllerBuilder().enableRestStyle().enableHyphenStyle()
                        .entityBuilder().enableLombok().addTableFills(
                                new Column("create_time", FieldFill.INSERT)
                        ).build())
                    //模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
                   //.templateEngine(new BeetlTemplateEngine())
//                   .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
    // 处理 all 情况
    protected static List<String> getTables (String  tables ){
    
    
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }

}

自定义模板

我在前面构建依赖的时候添加了 velocity模板的依赖 ,所以我们直接创建自己的自定义模板即可
在resouces下创建templates文件夹
在这里插入图片描述

/**
 * Copyright (c) 2018-2028, Chill Zhuang 庄骞 ([email protected]).
 * <p>
 * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.gnu.org/licenses/lgpl.html
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package $!{
    
    package.Controller};

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;

import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
#if($!{
    
    superEntityClass})
import org.springframework.web.bind.annotation.RequestParam;
#end
import com.baomidou.mybatisplus.core.metadata.IPage;
import $!{
    
    package.Entity}.$!{
    
    entity};
#set($voPackage=$package.Entity.replace("entity","vo"))
import $!{
    
    voPackage}.$!{
    
    entity}VO;
#set($wrapperPackage=$package.Entity.replace("entity","wrapper"))
#if($!{
    
    hasWrapper})
import $!{
    
    wrapperPackage}.$!{
    
    entity}Wrapper;
#end
import $!{
    
    package.Service}.$!{
    
    table.serviceName};
#if($!{
    
    superControllerClassPackage})
import $!{
    
    superControllerClassPackage};
#end
#if(!$!{
    
    superEntityClass})
#end

/**
 * $!{table.comment} 控制器
 *
 * @author $!{author}
 * @since $!{date}
 */
@RestController
@AllArgsConstructor
@RequestMapping("#if($!{package.ModuleName})$!{package.ModuleName}#end/$!{entityKey}")
@Api(value = "$!{table.comment}", tags = "$!{table.comment}接口")
#if($!{
    
    superControllerClass})
public class $!{
    
    table.controllerName} extends $!{
    
    superControllerClass} {
    
    
#else
public class $!{
    
    table.controllerName} {
    
    
#end

	private $!{
    
    table.serviceName} $!{
    
    table.entityPath}Service;

#if($!{
    
    hasWrapper})
	/**
	 * 详情
	 */
	@GetMapping("/detail")
	@ApiOperationSupport(order = 1)
	@ApiOperation(value = "详情", notes = "传入$!{table.entityPath}")
	public R<$!{
    
    entity}VO> detail($!{
    
    entity} $!{
    
    table.entityPath}) {
    
    
		$!{
    
    entity} detail = $!{
    
    table.entityPath}Service.getOne(Condition.getQueryWrapper($!{
    
    table.entityPath}));
		return R.data($!{
    
    entity}Wrapper.build().entityVO(detail));
	}

	/**
	 * 分页 $!{table.comment}
	 */
	@GetMapping("/list")
	@ApiOperationSupport(order = 2)
	@ApiOperation(value = "分页", notes = "传入$!{table.entityPath}")
	public R<IPage<$!{
    
    entity}VO>> list($!{
    
    entity} $!{
    
    table.entityPath}, Query query) {
    
    
		IPage<$!{
    
    entity}> pages = $!{
    
    table.entityPath}Service.page(Condition.getPage(query), Condition.getQueryWrapper($!{
    
    table.entityPath}));
		return R.data($!{
    
    entity}Wrapper.build().pageVO(pages));
	}

#else
	/**
	 * 详情
	 */
	@GetMapping("/detail")
	@ApiOperationSupport(order = 1)
	@ApiOperation(value = "详情", notes = "传入$!{table.entityPath}")
	public R<$!{
    
    entity}> detail($!{
    
    entity} $!{
    
    table.entityPath}) {
    
    
		$!{
    
    entity} detail = $!{
    
    table.entityPath}Service.getOne(Condition.getQueryWrapper($!{
    
    table.entityPath}));
		return R.data(detail);
	}

	/**
	 * 分页 $!{table.comment}
	 */
	@GetMapping("/list")
	@ApiOperationSupport(order = 2)
	@ApiOperation(value = "分页", notes = "传入$!{table.entityPath}")
	public R<IPage<$!{
    
    entity}>> list($!{
    
    entity} $!{
    
    table.entityPath}, Query query) {
    
    
		IPage<$!{
    
    entity}> pages = $!{
    
    table.entityPath}Service.page(Condition.getPage(query), Condition.getQueryWrapper($!{
    
    table.entityPath}));
		return R.data(pages);
	}
#end

	/**
	 * 自定义分页 $!{table.comment}
	 */
	@GetMapping("/page")
	@ApiOperationSupport(order = 3)
	@ApiOperation(value = "分页", notes = "传入$!{table.entityPath}")
	public R<IPage<$!{
    
    entity}VO>> page($!{
    
    entity}VO $!{
    
    table.entityPath}, Query query) {
    
    
		IPage<$!{
    
    entity}VO> pages = $!{
    
    table.entityPath}Service.select$!{
    
    entity}Page(Condition.getPage(query), $!{
    
    table.entityPath});
		return R.data(pages);
	}

	/**
	 * 新增 $!{table.comment}
	 */
	@PostMapping("/save")
	@ApiOperationSupport(order = 4)
	@ApiOperation(value = "新增", notes = "传入$!{table.entityPath}")
	public R save(@Valid @RequestBody $!{
    
    entity} $!{
    
    table.entityPath}) {
    
    
		return R.status($!{
    
    table.entityPath}Service.save($!{
    
    table.entityPath}));
	}

	/**
	 * 修改 $!{table.comment}
	 */
	@PostMapping("/update")
	@ApiOperationSupport(order = 5)
	@ApiOperation(value = "修改", notes = "传入$!{table.entityPath}")
	public R update(@Valid @RequestBody $!{
    
    entity} $!{
    
    table.entityPath}) {
    
    
		return R.status($!{
    
    table.entityPath}Service.updateById($!{
    
    table.entityPath}));
	}

	/**
	 * 新增或修改 $!{table.comment}
	 */
	@PostMapping("/submit")
	@ApiOperationSupport(order = 6)
	@ApiOperation(value = "新增或修改", notes = "传入$!{table.entityPath}")
	public R submit(@Valid @RequestBody $!{
    
    entity} $!{
    
    table.entityPath}) {
    
    
		return R.status($!{
    
    table.entityPath}Service.saveOrUpdate($!{
    
    table.entityPath}));
	}

	#if($!{
    
    superEntityClass})

	/**
	 * 删除 $!{table.comment}
	 */
	@PostMapping("/remove")
	@ApiOperationSupport(order = 7)
	@ApiOperation(value = "逻辑删除", notes = "传入ids")
	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
    
    
		return R.status($!{
    
    table.entityPath}Service.deleteLogic(Func.toLongList(ids)));
	}

	#else

	/**
	 * 删除 $!{table.comment}
	 */
	@PostMapping("/remove")
	@ApiOperationSupport(order = 8)
	@ApiOperation(value = "删除", notes = "传入ids")
	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
    
    
		return R.status($!{
    
    table.entityPath}Service.removeByIds(Func.toLongList(ids)));
	}

	#end

}

测试

在这里插入图片描述

原创不易,请大家点个赞再走吧!

猜你喜欢

转载自blog.csdn.net/weixin_43627706/article/details/125280258