Mybatis-plus 代码生成器使用官方VM模板生成代码(极简)

1.导入pom依赖

		<!--  代码生成器-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-generator</artifactId>
			<version>3.5.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.7</version>
		</dependency>

2.创建一个类使用main方法运行代码生成器代码(关键地方我写了注解 其他功能参考官方文档)

官方配置如下:https://baomidou.com/pages/779a6e/#%E4%BD%BF%E7%94%A8

package com.pzh.vue.utils;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;


import java.util.Collections;

/**
 * 代码生成器
 * @since 2022-03-21
 */
public class MP {
    public static void main(String[] args) {
        generate();
    }
    private  static  void generate(){
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/xia?serverTimezone=UTC", "root", "123456")
                .globalConfig(builder -> {
                    builder.author("xzh") // 设置作者
                            /*.enableSwagger() */// 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("E:\\springboot\\test\\vue\\src\\main\\java\\"); // 指定输出目录  和自己项目src一一对应
                })
                .packageConfig(builder -> {
                    builder.parent("com.pzh.vue") // 设置父包名
                            .moduleName(null) // 设置父包模块名  解决路径冲突
                            .serviceImpl("service.imp") //自定义包名imp 官方的是impi
                            .entity("pojo") //设置实体包为pojo
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "E:\\springboot\\test\\vue\\src\\main\\resources\\mappers")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.entityBuilder().enableLombok();//使用lombok
                    builder.controllerBuilder().enableHyphenStyle()
                            .enableRestStyle();//开启RestController
                    builder.addInclude("sys_role") // 设置需要生成的表名
                            .addTablePrefix("t_", "sys_"); // 设置过滤表前缀
                })
              //  .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

3.如有需要可以改写官方模板VM  需要找到模板并且复制到 templates

4.更改vm内容(要点:更改所有活的目录)

  (1)包名 import ${package.Entity}.${entity};

                  解释: ${package.Entity} = com.pzh.pojo 指你的实体路径(官方默认entity)

                             ${entity} = user 指实体

                  import ${package.Service}.${table.serviceName};

   (2)注入service 

             @Autowired
             private ${table.serviceName} ${table.entityPath}Service;

                   解释:${table.entityPath}Service 代表自定义对象的拼接 (如 实体是User)

                              这里结果就是userService

 (3)代码写在最后一个#end上面

下面是我的代码 可以参考:

    

package ${package.Controller};


import org.springframework.web.bind.annotation.RequestMapping;
//这里是动态的包
import ${package.Entity}.${entity};
import ${package.Service}.${table.serviceName};
//*******************缺什么包加什么*************************//

#if(${restControllerStyle})
import org.springframework.web.bind.annotation.RestController;
#else
import org.springframework.stereotype.Controller;
#end
#if(${superControllerClassPackage})
import ${superControllerClassPackage};
#end

/**
 * <p>
 * $!{table.comment} 前端控制器
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
#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
    //这里加你的控制层的代码
  @Autowired
      private ${table.serviceName} ${table.entityPath}Service;
     @GetMapping
     public Result findAll(){
        List<${entity}> list = ${table.entityPath}Service.list();
        Result result=new Result();
        result.setStatus(200);
        result.setData(list);
        return result;
        }

}

#end

5.运行代码生成器(注意更改你需要生成类的表名 和数据库表对应)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus代码生成器提供了自定义模板的功能,可以根据自己的需求生成对应的代码。下面是自定义模板的处理步骤: 1. 在代码生成器的配置文件中,设置自定义模板的路径。例如: ``` <property name="templatePath" value="/templates/mybatis-plus"/> ``` 2. 在自定义模板路径下创建对应的模板文件。例如,创建一个模板文件 `Entity.java.vm`,用于生成实体类的代码。 3. 在模板文件中使用 Velocity 模板语言,编写生成代码的逻辑。例如: ``` package ${package_name}.${module_name}.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * ${table_comment} * </p> */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("${table_name}") public class ${entity_name} { private static final long serialVersionUID = 1L; #foreach($field in $fields) /** * ${field.comment} */ private ${field.javaType} ${field.name}; #end } ``` 4. 在代码生成器中配置要使用的自定义模板。例如: ``` <property name="templateConfig"> <bean class="com.baomidou.mybatisplus.generator.config.TemplateConfig"> <property name="entity" value="/templates/mybatis-plus/Entity.java.vm"/> <property name="mapper" value="/templates/mybatis-plus/Mapper.java.vm"/> <property name="xml" value="/templates/mybatis-plus/Mapper.xml.vm"/> <property name="service" value="/templates/mybatis-plus/Service.java.vm"/> <property name="serviceImpl" value="/templates/mybatis-plus/ServiceImpl.java.vm"/> <property name="controller" value="/templates/mybatis-plus/Controller.java.vm"/> </bean> </property> ``` 在这个例子中,我们配置了生成实体类、Mapper接口、Mapper XML文件、Service接口、Service实现类和Controller类的模板路径。 5. 运行代码生成器,即可根据自定义模板生成对应的代码。 注意:自定义模板的命名必须与 MyBatis-Plus 内置模板的命名一致,才能正确覆盖内置模板。例如,要自定义生成实体类的模板,必须将模板文件命名为 `Entity.java.vm`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值