Mybatis

您所在的位置:网站首页 东北骂人方言视频 Mybatis

Mybatis

2024-01-12 20:27| 来源: 网络整理| 查看: 265

📢📢📢📣📣📣

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

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

 一、前言

在我们开发项目的时候,最烦的也是最累的就是手码代码了,那么就不可以自己生成代码吗?作者今天给大家带来的就是如何利用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里面加入以下额外的依赖

com.baomidou mybatis-plus-boot-starter 3.0.5 com.baomidou mybatis-plus-generator 3.0.5 org.apache.velocity velocity-engine-core 2.2

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

f31198c33a6c4ec3b144c06f45e1be45.png

3c1e0912c7fd4481b0251578ff004a3e.png

nexus-aliyun nexus-aliyun http://maven.aliyun.com/nexus/content/groups/public/ true false public aliyun nexus http://maven.aliyun.com/nexus/content/groups/public/ true false

以上就是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 /** *

* $!{table.comment} 前端控制器 *

* * @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 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 queryWrapper = new QueryWrapper(); queryWrapper.orderByDesc("id"); return Result.success(${table.entityPath}Service.page(new Page(pageNum, pageSize), queryWrapper)); } } #end

效果:

00057be1d3f44989a8891ef39195c34c.png

⛵小结

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

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

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3