iPage

MyBatis-Plus | 最优雅最简洁地完成数据库操作

对着背影说爱祢 提交于 2020-04-07 06:57:22
引言 两点: 一,使用MyBatis-Plus最新版(3.0.1)完成相关操作 二,好久没写MyBatis操作数据库的博文了,有没有想我啊,哈哈,认真看,认真听,认真学。 测试效果: 下面听我细细道来,MyBatis-Plus的优雅、简洁与强大。 代码生成器 代码生成器,又被叫做逆向工程,MyBatis官方为了推广,自己也写了一个,我之前也使用这个,功能也是非常强大,强大以为支持自定义配置,那么问题来了,我该怎么配置才合理呢,所以,有人把所有的配置项都弄成中文的,还有人开发了生成插件,这些在我以往的博文中都看看到。MyBatis-Plus的代码生成器到底怎么样,这我就不评判了,我就这样说,用用看吧。 在MyBatis-Plus的官网文档中,有将代码生成器的问题,有配置详解,也有项目示例代码,复制来就可用。 我这次是用MP 3.0.1,也就是最新版,官方还没有更新呢,所以,我去找了很久的源码,才将这个完成,勉强适合自己的了。这个在 CodeGenerator Module中,可以下下下来,导入到IDE中,看一下,修改配置就能运行。有问题,也可以与我讨论。 功能列表: [✔] 自动生成model类 [✔] 自动生成dao接口 [✔] 自动生成xml文件 [✔] 自动生成service接口 [✔] 自动生成service实现类 [✔] model支持Builder模式 [✔]

树形列表显示主表信息和明细信息,后台数据获取:使用集合的嵌套 Select 查询

时光毁灭记忆、已成空白 提交于 2020-03-17 22:17:20
某厂面试归来,发现自己落伍了!>>> 树形列表显示主表信息和明细信息,后台数据获取: 方法一: @Override public IPage<FeeReceivingVO> getPageList(IPage<FeeReceivingVO> page, String condition,Integer feeType,Integer acountsType) { IPage<FeeReceivingVO> list= baseMapper.getPageList(page ,condition, feeType, acountsType); for (FeeReceivingVO item : list.getRecords()) { List<FeeReceivingDetailVO> children = FeeReceivingDetailMapper.geDetailByReceivingId(item.getId()); if(children!=null) { item.setChildren(children); } } return list; } 方法二:这样查询结果条数为明细结果条数 方法三: <!--组合主表和明细表--> <resultMap id="feeReceivingResult" type="com.canyou.fee.entity

mybatis 的插件应用:分页处理(分页插件PageHelper)

时光总嘲笑我的痴心妄想 提交于 2019-12-06 10:05:39
mybatis 框架虽然使用起来相当简单,且灵活,自己管理着 sql 语句,但是开发起来还是有着不少的工作量,比如在处理分页问题的时候,我们通常需要另外再查询一次总共的记录数 其实我们是希望把获取分页信息的工作给统一起来,简洁代码,减少工作量 我们可以利用 mybatis 的插件功能(拦截器)来处理分页,这里我们尝试着自己去写一个简单的分页插件,后面也有介绍一个优秀的 mybatis 分页插件 PageHelper 的使用方法 一、自己写一个简单的分页插件 在 mybatis xml 配置文件中,我们可以配置插件(plugins),mybatis 允许你在已映射语句执行过程中的某一点进行拦截调用,这样我们可以通过拦截查询方法,添加分页查询条件,包装查询结果 1、创建一个插件 通过 MyBatis 提供的强大机制,使用插件是非常简单的,只需实现 Interceptor 接口,并指定想要拦截的方法签名即可 /* * 指定方法签名: * 下面的配置表面 将会拦截在 Executor 实例中所有的 “query” 方法调用, * 这里的 Executor 是负责执行低层映射语句的内部对象 */ @Intercepts({@Signature( type = Executor.class, method = "query", args = {MappedStatement.class,