Mybatis-Plus代码生成器-自定义Controller

📢📢📢📣📣📣

哈喽!大家好,我是一位上进心十足,拥有极强学习力的在校大学生😜😜😜

我所写的博客的领域是面向后端技术的学习,未来会持续更新更多的【后端技术】以及【学习心得】。 偶尔会分享些前端基础知识,会更新实战项目,以及开发应用!
❤️❤️❤️ 感谢各位大可爱小可爱! ❤️❤️❤️

 一、前言

在我们开发项目的时候,最烦的也是最累的就是手码代码了,那么就不可以自己生成代码吗?作者今天给大家带来的就是如何利用mybatis-Plus自动生成代码,且配置成自己想要的效果出来。

回想我们之前进行开发的过程,首先我们需要编写与数据库表对应的实体类,接着再进行创建各种层次的包(mapper,service,impl),这个过程是不是感觉特别漫长呢,而现在一款神器登场了,它就是:myBatis-Plus的代码自动生成器。

23d8aa39a6244e96b6e0c379536a318b.png

官网链接:https://baomidou.com/pages/779a6e/#%E4%BD%BF%E7%94%A8

二、代码自动生成器搭建 

1.新建数据库表格

CREATE TABLE `sys_user` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci DEFAULT NULL COMMENT '用户名',
  `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci DEFAULT NULL COMMENT '昵称',
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci DEFAULT NULL COMMENT '密码',
  `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci DEFAULT '男' COMMENT '性别',
  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci DEFAULT NULL COMMENT '地址',
  `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci DEFAULT NULL COMMENT '电话',
  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci DEFAULT NULL COMMENT '邮箱',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '用户注册的时间',
  `role` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci DEFAULT 'USER' COMMENT '身份,1为管理员,USER为普通用户',
  `avatar_url` varchar(255) COLLATE utf8mb4_turkish_ci DEFAULT NULL COMMENT '头像',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_turkish_ci COMMENT='用户列表';

数据库结构如下: 

f83b5d20f3c042bbb0128ea9c757d42b.png

 

 2.SpringBoot项目搭建

选择新建一个模块

891eca4b90f94c7bb24de186d9b3628a.png

然后选择Spring Initializr,按照图片标注的样式进行勾选。

重点!!!java选择版本8!!

e0c730bed3f34713994ddba7ac92115d.png

 点击进行下一步 

3c3e2f46aee140e8b8cbaefc0dd0aac0.png

 SpringBoot尽量选择低版本,防止后面依赖出现问题,依赖项选择以上几个,有添加的直接加进去就可以了。其中Lombok是简化代码的工具,就是说加上@Data就可以不用写get和set了,具体效果如图:

532e13dbed5d414a9e16693db7903a4d.png

然后就会看见一个名为Pom.xml的家伙

52e11d48ea51457f86c7ffefd9471161.png 

在pom.xml里面加入以下额外的依赖

        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
 
        <!-- 代码自动生成器依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.0.5</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

这里建议在结尾加上阿里云的库链接,导入依赖更加快速

f31198c33a6c4ec3b144c06f45e1be45.png

3c1e0912c7fd4481b0251578ff004a3e.png

<repositories>
        <repository>
            <id>nexus-aliyun</id>
            <name>nexus-aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

以上就是SpringBoot的搭建过程 

三、配置文件编写

95d23b7adb56426491620bf907335bba.png

将我们的application的后缀改为yml,在里面配置我们的数据库

9461ea098bd94b9a8abb91cf5859dddc.png

server:
  port: 9090
  ip: localhost
#  ip: 47.108.165.96

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/room?
    username: root
    password: 123456
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
files:
  upload:
    path: E:\Vue项目\RoomSystem\Room\files\
#    path: /root/files/
#alipay:
#  appId: 2021000121698632
#  appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCeTmUs8VNSl3hOHeP4Z6hG8FysBpQ+ZYsnBcYC/cX2M8uUZ9wLKbWrONsAeF1saR0bFaVZjhBAHVawY+6ncQGqfceGWw15UMrq2febVAPuI7ZY2zLA6y6mSlb7s+RA/3TNpAZE/qF0+l17TVEzRme3sjYwJuJu+HSucZSi5qZSSQ3RTqagtFkp8U2nfqjaAWen1FMsX3oiZK3crB3r4ocyk2tgFVBTFwX6jyKxRnqUF/e57LE4/bqmHYIiL85Ciiuf+e6achWSRRzAtMlT8DsuiSziKmYQs6No0FIuyI4TWOlKDOGvYycJ3D8ZkaSHNXznRXvXZhOZD8fq10JbGWivAgMBAAECggEADJyIOOVc0vaYMfj1oWN4p3Ycm+PGSZZDWK+AD9rxu2Ry8na3s/f1rhdQcyAjqTBSjkbSLmk/6CuuLU04xQQesttkWtLEJwcFs2H79NbjnUQhEcEcsPvLcpn3hgPVykvPnVZU3Yg/ipcrfVgygNg6CQtcf8eJQHfwq7kGs1eWpnVk0H7LxY4EiMow9lcTOidraBn7W6Jra4X+1QZPSFzATTPSo+pofSvmTPSsOd2et3lxxb8zItiEk31A6YOTUb8jzJlgIBiTZuG+d3shtc5D0GWV+RHfZErK0VrSxh7trX35HMt4lnCj+VENt6aYhouAdQMw7TZIM8xh8vvVbnZPCQKBgQDyVHnC94vY+kQ/f1Ad5gF4L1kEbkaJyYUA2i64PTapNpkWrvXwcPcoF9em+u02m1kgc6b2nKuu3qDZq6WfoxlJxupp8gA3MNvaZxkAjOyGL+55Y6Xn+nxtU3jo5t3mxEaVBaK8LGvzalv/bJ1qkg4TYPB2Jzs3Su2gCtpBbjL3cwKBgQCnPIUNBvfbGjaOJ8mnk7d8j7RC2K8fnhZtj3O5AUo12m7wPJG/hI0KHsh9G5vfWhFNSXX7oDYHEl5Jf30lx/fw0NCGTU68n6BnaGMX0j6EE5IaL4iKJAisfYEuTBlXtUXhyYKLzFtB2DsDSCCXpv6RXPc5vb1AhjK9wAeTB0ri1QKBgQDsB33Fecmb4D+DPWTyiinaPvvMRgCsijzi1KB20SChdk1r+6QOumjxgy+IM5XC/1KzOhJg176dB7jR6s7aC0lBQ97krFKrbwpk0tBWaeyi0qLLV1Sr+50f+xKkfuGZuIkq8x9Le1T19R2ATvGQcIwHMf9khde2hmOm44sr+cLoowKBgDNWOqmzF+bkdxbQU/DjQZI1MurKRYf5KX1cafPC15sMgL2yejNGZ11R8c2l6gV4SpNlF5i0p6EoHFWHk01Dw3LjRv/TP3ZbsgvMWY74dURqFZGAQfPV9+urYzppFeZ8uQUErNRpWSIvVH4/Z/Hly4On/CR3gF8MUws4pZqWxIA5AoGAFwTJUf920O2Pi8f6KMuNVzZyZi/4eq7iTfkDirGFLKnLz9nuZviFJ/8iLswjptv05C8lHyxcOVG0hJo2Kvf2D0eKn6f1iVqeg3eTMCFwev7+YAMcHo/z8tSmfCMeiUwni0wPQaZwHaR8pkXkeNkQt6j3RERWQy1vuPM8TdN19ww=
#  alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5pxReorutulL54ha3s5gZrc9C/LzTqNElwV9/UkfUjks9Dhian1D3q987c8T9qbodEtbD6M9UGodEpda5pg7W8bkkK5cxpekjXmTNJKqIS1K51fyFhzoNCPJJ9G4HpqOtVz7QP2QF9RzCQpujj1/uwUsdsGG4kdYl+I5sJpersyPA53/2tfNgvk20urV8scSopisRKTRkWLDg77uT8RRZrRVSsZS7l2nktWYIz2aF/Gn7TnhTq4tyt6gKfulcDjIGhmo1w6huVX4pG7kmiM4EoiqaOqq8tt1kjMz+0dGGH44PYycTx0msSxoKm0uYLPHeoGttig7Lfs3pS8Q09n3lQIDAQAB
#  notifyUrl: http://q5s98k.natappfree.cc/alipay/notify

四、代码生成器的实现

729b9a78dbfe420c8d64211aa3f54302.png

构建一个名为CodeGenerator的Java类,然后直接copy官网代码修改成自己的:

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

import java.util.Collections;

/**
 * mp代码生成器
 */
public class CodeGenerator {
    public static void main(String[] args) {
        generate();
    }

    private static void generate() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/xhc?serverTimezone=GMT%2b8", "root", "123456")
                .globalConfig(builder -> {
                    builder.author("") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("E:\\Vue项目\\B站\\后台管理系统\\springboot\\src\\main\\java\\"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.example.springboot") // 设置父包名
                            .moduleName("") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "E:\\Vue项目\\B站青戈\\后台管理系统\\springboot\\src\\main\\resources\\mapper\\")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.entityBuilder().enableLombok();
//                    builder.mapperBuilder().enableMapperAnnotation().build();
                    builder.controllerBuilder().enableHyphenStyle()  // 开启驼峰转连字符
                            .enableRestStyle();  // 开启生成@RestController 控制器
                    builder.addInclude("sys_menu") // 设置需要生成的表名
                            .addTablePrefix("t_", "sys_"); // 设置过滤表前缀
                })
//                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }
}

 然后运行,生成如下的结果:

b5d1966348ad4b7693801dadadc956f8.png

直接生成了User表的全部代码 

acfab3ac5cd04b87a7fdc7e6de01363b.png 

 五、自定义Controller模板

打开controller.java.vm,修改里面的内容。

46943f2c45ce48a38ccb07aabd36c49d.png

package ${package.Controller};

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;

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

#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
    @Resource
    private ${table.serviceName} ${table.entityPath}Service;

    //新增或者更新
    @PostMapping
    public Result save(@RequestBody ${entity} ${table.entityPath}) {
        ${table.entityPath}Service.saveOrUpdate(${table.entityPath});
        return Result.success();
    }

    //删除
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) {
        ${table.entityPath}Service.removeById(id);
        return Result.success();
    }

    @PostMapping("/del/batch")
    public Result deleteBatch(@RequestBody List<Integer> ids) {//批量删除
        ${table.entityPath}Service.removeByIds(ids);
        return Result.success();
    }

    //查询所有数据
    @GetMapping
    public Result findAll() {
        return Result.success(${table.entityPath}Service.list());
    }

    @GetMapping("/{id}")
    public Result findOne(@PathVariable Integer id) {
        return Result.success(${table.entityPath}Service.getById(id));
    }

    @GetMapping("/page")
    public Result findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize) {
        QueryWrapper<${entity}> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("id");
        return Result.success(${table.entityPath}Service.page(new Page<>(pageNum, pageSize), queryWrapper));
    }
}

#end

效果:

00057be1d3f44989a8891ef39195c34c.png

⛵小结

以上就是对Mybatis-Plus自动生成代码,自定义Controller简单的概述,使得我们的项目开发周期大大缩短,提供了足够的时间来进行我们的项目优化!

如果这篇文章有帮助到你,希望可以给作者点个赞👍,创作不易,如果有对后端技术、前端领域感兴趣的,也欢迎关注 ,我将会给你带来巨大的收获与惊喜💝💝💝!

 

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
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`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

沙漠真有鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值