新启动的项目,数据库设计可能随时会变动,一些基础的接口,特别是xml文件和映射对象也需要变动,改动工作量大,用mybatis-plus代码自动生成工具自动生成代码,大大提高了效率
自动生成代码工具使用过程记录如下
- 首先手动创建一个springboot项目,可以去springboot官网上生成,也可以用idea自己创建,我的idea是社区版,无法自己创建,用的官网自动生成,网址: https://start.spring.io/

- 导入依赖,我的模板使用的是freemaker

- 写自己的代码生成类,


这里自定义属性,是我在生成xml文件的时候,发现生成的result 里面的jdbcType不是我想要的,写了个方法,转换成自己需要的类型,在模板中调用这个方法,就能转换

自定义jdbc转换方法:

这里的自定义输出,xml文件生成以后在文件夹resources/mapper下,不会和java代码在一个地方


- 模板修改,这里是重点,Mybatis中有模板,但不一定是我们需要的,如果想写成自己需要的,就修改模板,我的是需要写自己项目对应的代码,所有模板都修改了一遍
修改思路:
在resources目录下新建templates文件夹,
找到mybatis-plus包中的模板,拷贝出来,放到templates文件夹下,我这里使用的模板是freemaker,所以知悉要保留对应的模板就可以了,freemaker模板对应的文件后缀是.ftl


- mapper模板

- mapper.xml模板,这里是重点中的重点,我个人花时间最长的
下面是生成返回结果集

通用查询列
新增,条件新增,字段子为null,不新增,生成的sql带if标签
描述:
<#noparse>/#noparse> 标签,特殊字符转义用的,有些{需要保留,就用这个标签

下面这个删除,涉及到逻辑删除和物理删除,
<#assign isDeleted = "false"> 是定义全局变量的,我这里定义的是isDeleted 可以按需定义
<#if (logicDeleteFieldName!"") == field.name> 这里:logicDeleteFieldName 是代码生成类中 策略配置 设置了的
以下是逻辑删除生成sql的模板代码

条件查询,不传条件不加过滤条件,查询全表数据,生成的sql中带if标签判断是否有传入参数

- controller模板,我项目中是按照自己需要写的,不适用其它项目,这里就不描述,说一下思路:如果你的项目中的接口基本差不多,入参出参都有统一规范,可以自己先写好一个controller,然后以这个controller为模板,写对应的代码,下面是我的其中一个接口,仅供参考

- serviceImpl模板,service模板,entity模板,思路参考controller,这里不描述
后记:第一次写模板,不知道模板中一些变量的层级,以及这个变量是否存在,请教了同事,记下心得:
debug模式调试:
断点位置:
AutoGenerator 类中,找到:AbstractTemplateEngine 类的getObjectMap方法,

点击view,拿到json格式的数据,自己保存下来,方便看,以及找属性,我的如下

这里也可以看自定义属性是否设置成功,以及层级关系

到这里,自动生成的代码和模板都写完,运行,测试,看是不是自己需要的代码吧


















![JS——【案例】图片轮播图(自动轮播/手动点击/悬停显示)[技术栈:html、css、JavaScript]](https://img-blog.csdnimg.cn/58927de9256443569580a4160cc59939.png)