mybatis
Mybatis是一个优秀的持久层框架,支持定制SQL、存储过程和高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数和获得结果集。MyBatis可以使用简单的XML或注释来配置和映射原生信息,并将接口和Java的POJO(Plain Old Java Objects)映射到数据库中的记录。
但是mybatis有一个让我头疼的问题,就是sql的工作量大,尤其是字段多的时候。虽然说可以用mybatis生成器工具(或者自己写个模板工具)生成单个表的添加、删除、查询操作,但是在项目开发的过程中,添加新的字段是不可避免的。这些工具帮不了我,我还得把新的字段写入所有的原始sql中进行添加、删除和查询。这是一个痛苦的过程,尤其是当你重复很多次的时候。
mybatis的单表操作对小偷来说也很麻烦,因为筛选条件可能是各种各样的,所以你要写很多动态sql来兼容查询条件,这也让我无法专心做业务。
每当这种情况发生时,我都会想念冬眠。呵呵,Hibernate很容易添加字段,单表操作也方便。但是我还是不喜欢用Hibernate,哈哈。
mybatis-plus
和mybatis-plus是一个结合了mybatis和hibernate优点的框架。它提供了hibernate的单表CRUD操作的便利,同时保留了mybatis的特点。
我们来看看官方是如何解释mybatis-plus的:
Mybatis-Plus(简称MP)是Mybatis的增强工具。基于Mybatis,只做增强不做改动,为简化开发,提高效率而生。
我们的愿景是成为Mybatis最好的伙伴,就像魂斗罗游戏里的1P和2P,有基友匹配,效率翻倍。
带着问题去学习,请思考。
mybatis-plus如何实现单表URUD操作?mybatis-plus的底层实现原理是什么?mybatis-plus相对于mybatis helper等其他同类框架有哪些优势?如何集成mybatis-plus快速搭建一个春开机项目?特点
从上图可以看出,mybatis-plus不仅封装了基本的CRUD操作,还内置了反SQL注入操作、常用分页插件以及我最喜欢的ActiveRecord模式。
用过jfinal的人应该都知道什么是ActiveRecord。活动记录是一种数据访问设计模式,可以帮助你实现数据对象对象到关系数据库的映射。
公共实体注释
MPORM模式封装了常用的CRUD操作,自然,实体注释是必不可少的。我们先来看看有哪些注释。
其中实体标注设置可以按如下方式处理:
当数据库的表字段名为驼峰名时,不需要注释。或者全局配置:underline dbColumnUnderline设置为true,大写isCapitalMode设置为true。但其实我从来没有手写过这些评论。使用mp代码生成器自动生成主体,直接覆盖原主体,方便快捷,减少人为错误。至于@Version和@KeySequence,我好像没用过。嘿嘿。
简化的CRUD
如前所述,mp简化了mybatis单表的基本操作。先来看看吧。
两种编写方式相比,我更倾向于ActiveRecord的模式编写,因为不需要注入userMapper,只需要在创建对象后直接调用方法操作即可。
复杂的查询也很简单。创建一个新的EntityWrapper作为查询对象,包装器接口封装了很多常用的方法。sql几乎能写出的条件,可以通过调用包装器方法来表达。
建筑原理
参考答案省略。
但是我建议你去mp官网或者这里,哈哈-my batis-plus Practice and Architecture Principle.pdf。
Mybatis plus代码生成器和Mybatis生成器
说到mybatis plus代码生成器的代码,我记得之前在这篇文章里介绍过。
开源项目spring-shiro-training思维导图,让项目不再难懂。现在再用一次。其实原理很简单。定义velocity模板(当然也可以自定义),然后调用参数渲染模板生成相应的文件。
我建议生成的位置不要直接覆盖原文件。你可能已经修改过了,直接覆盖会导致丢失。
mybatis生成器生成的代码是基本的添加、删除、修改和实体。模板好像不能改,灵活性明显不足。
Mp插件扩展
Mp不仅帮助我们实现了添加、删除、搜索的基本操作,还扩展了很多实用的插件。使开发过程更容易。
作者:java思维导图
链接:https://juejin.im/post/5a711587f265da3e5a579109