摘要:通过插件更优雅地生成和的样板代码通过插件不污染地实现优雅分页。使用步骤引入依赖,在或的配置中进行配置。提供语法提示自动补全错误提示导航功能。该插件提供了类似的功能,根据接口的方法名推断含义,然后在中直接生成对应的。
团队使用Mybatis作为数据库访问框架。不同于Hibernate这种采用经典面向对象思想设计的ORM框架,Mybatis是面向过程的,它只做了过程到SQL语句的映射。两者的性能在绝大多数场景下是差不多的,因此理论上可以互相替代使用。由于Mybatis可以直接控制底层SQL,因此对于码农来说,学习成本更低、优化起来更容易;不过也带来了首次配置繁琐、样板代码较多等缺点。
比如是对于单表的、简单的查询,为了符合JavaWeb网络开发模型的Web、Service、Dao的三层模型,不得不在Dao层、Service接口、Service实现类中添加功能几乎重复的代码,所做的也不过是透传,这里就存在可以优化的点。
本文的目的是优化工具链支持,减少手动开发Mybatis样板代码的时间。
通过Intillij Idea插件更优雅地生成DAO Mapper和XML Statement的样板代码
通过Mybatis插件不污染XML Statement地实现优雅分页。
Mybatis分页插件:Mybatis PageHelper实现原理基于Mybatis的QueryInterceptor机制,能动态拦截sql语句并根据对应的数据库类型加上分页语句。无需修改底层的SQL。
使用步骤
引入Maven依赖,在mybatis或spring的配置xml中进行配置。
在DAO Mapper方法中增加入参@Param("pageNum") int pageNum, @Param("pageSize") int pageSize即可。
> 插件还有多种调用方法。[Mybatis-PageHelper][Mybatis-PageHelper]Mybatis代码生成插件 Fin. 总结
插件生成样板代码的方式大致有三种:根据数据库连接、根据POJO、根据建表sql,用户根据实际情况选择。
MyBatisCodeHelper提供了声明式的Statement开发方法,在编写自定义Dao方法时可省去部分对应SQL的编写时间。
MyBatisCodeHelper、Mybatis Plugin提供XML语法提示、自动补全、错误提示、导航功能。
1. MyBatisCodeHelper
代码生成流程
在IDE中开发持久化对象(POJO)
在可视化界面配置表名、主键、类型、索引、默认值、注释等,自动生成建表SQL语句、DAO Mapper、Mapper XML
> 默认生成的DAO中包含了`insert`、`insertSelective`、`insertList`、`update`方法 > `POJO`示例和DAO Mapper示例 ```java public class UserPO { private Integer id; private String name; private String age; private Date addTime; private Date updateTime; private Boolean isDelete; //getter/setter } ``` ```java int insert(@Param("userPO") UserPO userPO); int insertSelective(@Param("userPO") UserPO userPO); int insertList(@Param("userPOs") ListuserPOs); int update(@Param("userPO") UserPO userPO); ``` > 可视化UI ![clipboard.png](/img/bVUk7g)
其他功能
根据DAO方法名推断生成XML Statement的实现
> `Spring Data Jpa`(基于`Hibernate`)提供了一种类SQL的**声明式的开发方法**,能根据符合特定规则的接口方法名在运行时自动生成字节码。该插件提供了类似的功能,根据接口的方法名推断含义,然后在`Mapper XML`中直接生成对应的SQL。比如`findByStartDateBetween`方法会被翻译成这样的SQL`… where x.startDate between ?1 and ?2`。 > 具体的推断规则可以参考`Spring Data Jpa`文档,也可以见脚注:方法名推断之约束条件[^方法名推断之约束条件],方法名推断之比较符[^方法名推断之比较符]。2. Codehelper.generater
代码生成流程
在IDE中开发持久化对象(POJO)
在配置文件中设置路径(或者使用默认配置),自动生成建表SQL语句、DAO Mapper、Mapper XML
其他功能
代码补全(AutoCoding Mode)。按AutoCoding键一次会生成Java Bean的所有Setter方法。按AutoCoding键两次则会为Setter方法生成默认值。对于字段很多的POJO,可以防止批量的Set操作漏掉某些字段。
3. Mybatis Plugin
代码生成流程
配置数据库
配置样板代码生成路径
生成样板代码(POJO、DAO Mapper、Mapper XML)
其他功能
Xml Statement和对应方法导航,ResultMap和对应POJO导航
DAO Mapper、Xml代码提示和补全
代码检查及XML语法错误提示
集成了Mybatis Generater,可生成mybatis-config.xml和mybatis-generater-config.xml模板
根据Mapper对象(必须以Mapper结尾)自动生成Mapper Xml、其中的方法生成对应的Statement(只包含外层元素)
> 例如:根据`int countById(@Param("id") Integer id);`就会生成``4. MybatisGenerator、Swords、AutoCurd、GetCode、foilvora、Mybatis Maven Plugin
代码生成流程
配置数据库
配置样板代码生成路径
生成样板代码(POJO、DAO Mapper、Mapper XML)
foilvora:通过建表sql生成样板代码Reference
Mybatis Maven Plugin:在mybatis-generater-config.xml配置数据库连接,生成对应的Mapper Xml、Mapper类、POJO,可配置性最强
Swords配置图1
MybatisGenerator配置图2
Spring Data Jpa - Query creation
MyBatisCodeHelper-Pro
Free Mybatis plugin
MybatisGenerator
AutoCurd
Free Mybatis plugin
CodeHelper Generator
Mybatis Plugin - Document
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70325.html
摘要:效率专精系列善用统一描述语言提升开发效率分钟搞定环境配置与使用考虑到篇幅较长的文档反复修改的情况,要快速找到修改点比较困难。 之前零零散散写了几篇文章,主要是实际开发过程中一些效率痛点和相应的改善方法。今天抽空温故知新,把之前的内容串起来,做了个小总结,即《效率专精系列》小系列的总集篇。 回顾项目开发流程 开发一个新项目时,开发流程大概分成以下几步: 设计方案,并落地成设计文档 设计...
摘要:其标准为前身是,提供强大的在线编辑功能,包括语法高亮错误提示自动完成实时预览,并且支持用户以格式撰写导入导出转换文档。 团队内部RestAPI开发采用设计驱动开发的模式,即使用API设计文档解耦前端和后端的开发过程,双方只在联调与测试时耦合。在实际开发和与前端合作的过程中,受限于众多因素的影响,开发效率还有进一步提高的空间。本文的目的是优化工具链支持,减少一部分重复和枯燥的劳动。 现状...
摘要:目前团队中前后端联调是较之个人单独开发相对耗时的一个环节,主要体现在环境下的部署时间较长。本文的目的是通过将联调本地化,减少部分枯燥劳动以及无效的等待时间,提高团队的开发效率。不需要更改的为外部,保持即可。 目前团队中前后端联调是较之个人单独开发相对耗时的一个环节,主要体现在: beta环境下的部署时间较长。首先部署beta需要经过push分支、合并冲突、build、部署四个步骤。...
摘要:而热部署技术能够帮助开发人员减少重新部署的等待时间。本文的目的为调研热部署的技术现状及其对开发效率的帮助,并简单梳理其技术实现的难点。热部署技术总结热部署目前有多种技术实现官方开源商业。 开发、自测、联调期间代码可能会被频繁地修改,通常即使只增加了一行代码,都需要重启容器以检查执行效果。而热部署技术能够帮助开发人员减少重新部署的等待时间。本文的目的为调研热部署的技术现状及其对开发效率的...
阅读 2269·2021-09-26 10:21
阅读 2753·2021-09-08 09:36
阅读 3038·2019-08-30 15:56
阅读 932·2019-08-30 12:57
阅读 876·2019-08-26 10:39
阅读 3533·2019-08-23 18:11
阅读 3054·2019-08-23 17:12
阅读 1039·2019-08-23 12:18