Mybatis代码自动生成

新启动的项目,数据库设计可能随时会变动,一些基础的接口,特别是xml文件和映射对象也需要变动,改动工作量大,用mybatis-plus代码自动生成工具自动生成代码,大大提高了效率

自动生成代码工具使用过程记录如下

  1. 首先手动创建一个springboot项目,可以去springboot官网上生成,也可以用idea自己创建,我的idea是社区版,无法自己创建,用的官网自动生成,网址: https://start.spring.io/  

 

  1. 导入依赖,我的模板使用的是freemaker
  2.  写自己的代码生成类,

 

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

自定义jdbc转换方法:

 

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

 

 

 

 

 

  1. 模板修改,这里是重点,Mybatis中有模板,但不一定是我们需要的,如果想写成自己需要的,就修改模板,我的是需要写自己项目对应的代码,所有模板都修改了一遍

修改思路:

在resources目录下新建templates文件夹,

找到mybatis-plus包中的模板,拷贝出来,放到templates文件夹下,我这里使用的模板是freemaker,所以知悉要保留对应的模板就可以了,freemaker模板对应的文件后缀是.ftl

 

 

  1.       mapper模板

  1. mapper.xml模板,这里是重点中的重点,我个人花时间最长的

下面是生成返回结果集

 通用查询列

 新增,条件新增,字段子为null,不新增,生成的sql带if标签

描述:

<#noparse>/#noparse>  标签,特殊字符转义用的,有些{需要保留,就用这个标签

 

下面这个删除,涉及到逻辑删除和物理删除,

<#assign isDeleted = "false">  是定义全局变量的,我这里定义的是isDeleted  可以按需定义
<#if (logicDeleteFieldName!"") == field.name>  这里:logicDeleteFieldName 是代码生成类中 策略配置 设置了的 

 以下是逻辑删除生成sql的模板代码

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

 

 

 

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

 

  1. serviceImpl模板,service模板,entity模板,思路参考controller,这里不描述

后记:第一次写模板,不知道模板中一些变量的层级,以及这个变量是否存在,请教了同事,记下心得:

debug模式调试:

        断点位置:

AutoGenerator  类中,找到:AbstractTemplateEngine 类的getObjectMap方法,

 

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

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

 

 

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

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值