这篇文章主要介绍了MybatisPlus框架源码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MybatisPlus框架源码分析文章都会有所收获,下面我们一起来看看吧。免费云主机域名对于数据库中表中的公共字段我们可以抽取出来做成基类继承。避免表映射的数据库实体类字段太过繁杂。
例如常用的创建时间、创建者、更新时间、更新者、逻辑删除字段。通过继承了基类,实体类看起来就简洁了许多。
*通知公告表
*既然抽取出了公共字段,我们可以更进一步将这些公共字段进行自动填值处理。
Mybatis Plus提供了字段自动填充的插件。使用自定义填充值时,需要在生成实体的时候加上配置。FieldFill.INSERT 和 FieldFill.INSERT_UPDATE数据库一般不进行真实删除操作。但是如果让我们手工处理这些逻辑删除的话,也是非常麻烦。Mybatis Plus有提供这样的插件。仅需要在EntityConfig中设置逻辑删除的字段是哪个即可。Mybatis plus支持生成entity,mapper,service,controller这四层类。 但是笔者认为生成类的时候还是不要直接覆盖原本的类比较好。
我将生成的类,固定放在一个目录让使用者自己copy类到指定的目录。
以下是我自己封装的CodeGenerator的代码片段。
需要填入的字段主要是:作者名包名表名是否需要继承基类(因为不是所有表都需要继承基类)系统内的查询大部分有共用的逻辑。比如时间范围的查询、排序。我们可以抽取这部分逻辑放在基类。 然后把具体查询条件的构造,放到子类去实现。分页是非常常见的查询条件,我们可以基于AbstractQuery再做一层封装。比如我们有个菜单查询列表,我们可以新建一个MenuQuery继承AbstractQuery。然后实现 toQueryWrapper方法去构造查询条件。如果有另外一个不同的菜单查询列表,查询的参数一样,但是查询条件的构造不一样。我们可以新建一个DifferentMenuQuery类继承MenuQuery类,再覆写toQueryWrapper方法即可。如果在项目中的查询明确是单表操作的话,我们可以使用LambdaQuery来构造查询。Mybatis Plus支持@Select注解,遇到简单的多表join查询的话,我们可以直接在代码中写SQL语句。以下是Mapper中的实现。${ew.customSqlSegment} 会渲染出QueryWrapper类生成的查询条件。Service层中的实现。如果遇到复杂的报表型查询,利用@Select注解的话,可能SQL看起来还是非常的复杂。此时推荐使用XML的形式。Mybatis Plus支持activeRecord特性,我们可以直接在Entity上执行saveupdatedelete等操作。框架会自动帮我们落库。 activeRecord需要在EntityConfig配置。因为Entity都是生成的,我们不方便将业务逻辑直接放在Entity中。这样会和数据库实体过于耦合。
推荐新建一个模型类继承XxxxEntity,然后将逻辑填充在模型类中。在应用层我们就可以直接调用模型类来完成逻辑操作。整个代码的语义性非常强。以上是单条数据的落库操作,那么多条数据循环去insert的话,显然不是一个明智之举。
Mybatis Plus提供了批量落库操作。JPA的方式有一个弊端就是需要先拿到数据实体类,才能调用save等操作。还有一种情况,我们需要按照某些条件去更新数据,而不想先一条条获取数据再Save。此时可以使用LambdaUpdate类。Mybatis Plus提供了安全方面的插件,比如阻止全标更新删除的插件。仅需要声明MybatisPlusInterceptor Bean,依次添加拦截插件即可。Mybatis Plus提供@DS注解去动态选择从库还是主库来执行SQL.比如打上了@DS(“slave”)的接口,就会去找slave这个从库进行操作。关于“MybatisPlus框架源码分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MybatisPlus框架源码分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。
这篇文章主要介绍了es6数组如何求平均数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇es6数组如何求平均数文章都会有所收获,下面我们一起来看看吧。 方法:1、使用“arr.reduce(function(p,c){return …
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。