栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis代码自动生成

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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格式的数据,自己保存下来,方便看,以及找属性,我的如下

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

 

 

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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282379.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号