Mybatis-plus一键生成代码(踩坑记录,用了3种方式)
Mybatis-plus一键生成代码
本人现在从事Web前端开发,但是转型之前一直在写SpringMVC项目,所以对后端开发还留有一点兴趣。今晚就有了想法,用Springboot整合Mybatis(后来发现不满意,又换成了mybatis-plus)并且一键生成代码。遇到点坑,特此记录,也方便以后查阅。
进入正题,用IDEA搭建springboot项目的基本操作就不演示了(包括数据源配置),还有maven以及本地仓库的配置、环境变量在此也不叙述了,这些都是最简单的。项目搭建好之后,我先后用了3种方式。
吐槽一下,配环境变量的时候,在path里直接把maven bin目录的地址文本复制到里面就可以了,就能用mvn命令了,不需要先搞啥HOME变量之类的,bin这个文件夹里存放的就是可执行的二进制文件,啥xxxx.cmd之类的。在cmd命令窗口里就是通过找这个cmd文件来调用命令,所以直接把地址复制过去就行了,jdk、jre啥的一样。
回到正题,,,
第1种,想偷懒,就用了easycode插件,代码确实生成了,但是实体类报错,好像缺啥类,后来一看,发现了JPA,看见JPA三个字就没多想了,直接Pass,换一种。
第2种,用mybatis生成器呗,这里要注意在POM文件里添加两个依赖,mybatis以及mybatis-generator,此外还要添加一个所谓的xml配置文件最后在终端里用mvn命令来生成,反正这个配置文件挺倒腾人的,结果生成代码一看,只生成了实体类和dao层,仔细查看配置文件,原来里面只配了实体类和dao层。当时心想,这还不简单,我把控制层和服务层都加上去。好家伙,这一加上,直接报错,说啥context错误XXXX,反正又把我折腾了不少时间。百度说context标签内的子标签顺序不能错,OK,我顺序也没错啊(服务层控制层这些啥的标签并列写都不行?把爷整笑了)?还有那啥数据库里的表名要大写,小写貌似也出错。
总而言之,,这种方式,,太尼玛坑了,pass pass,赶紧用plus。
第3种,用mybatis-plus
这个就稍微舒服了点。
先上依赖:
<!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><!-- mybatis-plus代码自动生成器依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.3.1</version></dependency><!--Freemarker引擎模板--><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>3.0.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>3.0.0</version></dependency>
我这共有5个。注意版本3.5.3.1啥的,一开始我百度是三个数的,发现不行,换成这个四位数的。依赖加好之后,写一个生成类,如下:
package com.config;import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;import java.util.Collections;public class Generator {public static void main(String[] args) {Generator generator = new Generator();generator.generator();}void generator(){FastAutoGenerator.create("jdbc:mysql://localhost:3306/takeout?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false", "root", "password").globalConfig(builder -> {builder.author("SSA") // 设置作者.enableSwagger() // 开启 swagger 模式.outputDir("D:\\Ago\\wsfxt-service\\src\\main\\java"); // 指定输出目录}).packageConfig(builder -> {builder.parent("com") // 设置父包名.moduleName("") // 设置父包模块名.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\Ago\\wsfxt-service\\src\\main\\resources\\mapper")); // 设置mapperXml生成路径}).strategyConfig(builder -> {builder.addInclude("user,good") // 设置需要生成的表名.addTablePrefix("", ""); // 设置过滤表前缀}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板.execute();}
}
注意那个包名,我的就是com,我不喜欢写com.XXX啥的,所以是这么写的。还有那个表,多个表的话用逗号分隔就行了,因为addInclude这个方法的源码里使用了逗号来截取(官网示例代码里貌似没写,我是点进源码里看到的)。
最后,,,运行一下main方法,就能生成代码了。关于mybatis-plus的具体增删改查语法可以百度哈。还有个问题,多次生成会不会覆盖之前的,我这种是不会覆盖的,其他的就没试过了。
回想当年,,,就是因为不想再碰这些杂七杂八的配置文件(太繁琐了),也不想再跟数据库打交道了(有一次操作生产库的时候分神了,,,),就系统的自学了前端,也从此进入了前端圈子。我对java算不上抵触,但也没多大感觉。另一个原因,写接口没啥成就感。我是去年4月底开始,就不写后端了。这时隔快一年了,没想到今天又搞起了后端项目。干前端之前,一直写的SpringMVC项目,用JSP充当视图。mvc项目的配置文件还是很烦的,什么XML配bean啥的一堆,所以用boot的时候很清爽。而且当时那个项目也没用mybatis啥的,还是用的JDBC Template操作SQL语句,这玩意写起来挺难受的。写jsp的时候,用的jquery,这玩意操作dom真麻烦,后来学了vue简直不要太爽。
说个好玩的,长时间写JavaScript,今晚写Java这个生成类的时候,差点就像JS那样直接调用了方法。。。。。。
特此记录,折腾了一晚!
Mybatis-plus一键生成代码(踩坑记录,用了3种方式)相关推荐
- 在Cent OS云服务器上部署基于TP5后端代码踩坑记录_艾孜尔江撰
推荐使用镜像安装Cent OS系统,或者在纯净安装完成之后在完成Apache+MySQL+PHP的时候不要每个单独安装,因为这样会出一些三者之间版本不配的问题,网上各种说法都有,查起来也非常困难,版本 ...
- Windows 10环境下「MSCOCO Captions」评估代码踩坑记录
文章目录 引言 解决python2→python3.x问题 验证评估代码是否可以正确运行 解决 jar 包运行出错的原因 排查jar包运行出错的原因 解决Could not reserve enoug ...
- 【MathType安装】Office2019+MathType7.4.8.0+踩坑记录+最终使用方案
使用Office2019安装MathType7.4.8.0屡屡碰壁,最终使用的解决方案不同于网络上的大多数方法.尽管当前记录的解决方案还不完美.未做到一劳永逸,但能用就行. MathType安装包获取 ...
- mybatis学习与踩坑记录
mybatis resultmap高级映射 应用场景:如果sql查询的列名和pojo的属性名不一致,可以使用resultMap将列名和pojo的属性名作一个对应关系,就可以映射成功了.(如果返回值为i ...
- 【踩坑记录】mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错
[踩坑记录]mybatis-plus的insert方法,默认会生成一个uuid作为主键,导致类型不一致,存入数据库报错 报错记录 解决方案 推荐方案 使用uuid作为主键,修改id的类型为bigint ...
- 【软件分析】Tai-e实验代码理解与踩坑记录
软件分析实验Tai-e代码理解与踩坑记录 A1 A2 A3 A4 实现类层次结构分析(CHA) 实现过程间常量传播 实现过程间 Worklist 求解器 A5 A6 A7 实例字段 load stor ...
- VS Code Python 代码智能提示(自动补全)编译环境设置踩坑记录
VS Code Python 编译环境设置踩坑记录 本菜鸡非常喜欢VS code的简洁风格,而且跟原来再用的VS2017相比简直不要太快,前段时间电脑重装之后又要在windows系统上重新搭建整套环境 ...
- SpringBoot踩坑记录 Invalid bound statement (not found)引发的一些列问题
SpringBoot踩坑记录 Invalid bound statement (not found)引发的一些列问题 当你开开心心搭建了一个SpringBoot项目,用插件生成了entity.dao. ...
- 日常踩坑记录-汇总版
开发踩坑记录,不定时更新 心得 RTFM 严谨的去思考问题,处理问题 严格要求自己的代码编写习惯与风格 注意 单词拼写 20200207 mybatis plus 自带insert插入异常 sql i ...
最新文章
- commons-pool2-2.4.2连接池读后笔记
- ADO.NET 中的表达式
- 用按位异或运算符交换两个数,不引入第三个变量
- springboot整合jdbc
- 知名论坛猴岛游戏论坛宣布永久关闭!
- [python爬虫] 招聘信息定时系统 (二).调用pyinstaller包生成exe文件
- 3x3九宫格java_Java实现九宫格的简单实例
- 【Envi风暴】Envi5.4经典安装图文教程
- opencv模糊图像变清晰_opencv-python 4.2图像模糊
- 分段函数(信息学奥赛一本通-T1051)
- 强化学习《基于价值 - Double Q-Learning》
- 【UML】协作图Collaboration diagram(交互图)(转)
- Pandas 矩阵运算
- [CMake] 头文件路径 动态库路径
- 【数据科学】什么是数据分析
- 三峡大学本科毕业论文答辩PPT模板
- 天正暖通2013版安装包附带注册机下载
- 微信的Linux版本,ubuntu16.04安装微信,linux原生版
- 88年的世界杯历史,用Python带你回顾!
- 爬虫爬取wallpaperswide上的高清壁纸