百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

增强Mybatis处理多表查询 我再也不用写VO类!!!

ztj100 2024-10-27 18:37 23 浏览 0 评论

<dependency>
 <groupId>com.github.hioo520</groupId>
 <artifactId>collections-plus</artifactId>
 <version>1.4.5</version>
</dependency>

每当我们辛苦的解决好表与表之间的耦合时(就是解决好表与表之间的字段冗余) ,然后就会发现比较棘手的问题是联表查询困难至极(主要是定义关联类或者定义xml定义查询SQL),发现联表查询时出现特别特别恶心的事,我们不得不小心翼翼改写xml文件,小心翼翼修改查询内容.这个还没完,突然需求改了 , 实体类又改了, wot,我又得改写xml文件,啊天理不容,改vo类,还有无休止的测试!!!!!啊,我是个浪人,我不想这般所以>>>>.....>>>>>

1.工具说明

应用背景:

1.Mybatis对连表(多表查询)查询映射实体对象的不足(或许有 配置还的需要学习 算了 还不如写vo类)

2.每次对修改复杂联表查询需求(已经有的业务急待重构缺束手无策)痛不欲生(纠结于添加冗余字段还是写vo类)

3.考虑业务的棘手,缺又苦无无法加快进度,还要无数次的忍受测试痛苦(一旦修改实体类VO类也要跟着修改业务逻辑也得从新思考关!我感觉身体被掏空,油墨有)

技术:注解+(设计模式)(单例-内部类懒加载,责任链,工厂模式)

优点:

1.非侵入式工具(可以很容易添加到你的SpringBoot项目 maven依赖)

2.易学习 易用

3.不需要写VO类

4.直接填充到对应对象List<E> 当然也可以填充到对应的对象

5.支持自定义规则(比如 时间格式 空值处理策略 ..)

6.解决多实体类名的相同字段 eg.都包含id (就是多表多列名存在重复的情况)

2.使用

1.直接撸代码(具体的方法)

 * tips sql+ 增强工具(带缓存) 自动填充对象
 *<p>这个方法只是梳理查询出来的结果转化为对应pojo 名
 * @notice: 返回值 "List<Map>" "Map<String,List<E>" "list<E>"
 * @author: hihuzi 2019/2/14 9:08
 */
 public abstract <E> Object listToEntity(List<Map> list, SqlConfig config) ;
 /**
 * tips sql+ 增强工具(带缓存) 自动填充对象
 *<p>这个方法只是梳理查询出来的结果转化为对应pojo 名 可以返回对象
 * @notice: 返回值 "List<Map>" "Map<String,List<E>" "list<E>"
 * @author: hihuzi 2019/2/14 9:08
 */
 public abstract <E> Object listToEntity(List<Map> list, E... e);
 /**
 * tips sql+ 增强工具(带缓存) 自动填充对象
 *<p> config 配置自定义信息
 * @notice: 返回值 "List<Map>" "Map<String,List<E>" "list<E>"
 * @author: hihuzi 2019/2/14 9:08
 */
 public abstract <E> Object listToEntity(List<Map> list, SqlConfig config, E... e) ;
 /**
 * tips sql+ 增强工具(带缓存) 获取自定义sql
 *<p> 用于获取自定义sql
 * @notice: 返回值 "List<Map>" "Map<String,List<E>" "list<E>"
 * @author: hihuzi 2019/2/14 9:08
 */
 public abstract <E> Object getSQL(SQLBean config) ;

没啥好讲的直接复制包到你的项目的工具文件下

B.还是第一步(高手可以生成jar包直接引用)

C.第二步

D.第三步 直接看前台

(对于这里出现的多余数据 在1.4.2以上版本中已经解决 不存在会出现多余返回数据的情况)

E.第四部 等待你的思路(方法解释以及拓展)

算了还是贴上(没空看源码的人啦)-->测试类

F.好吧 !!!还是给出源码地址吧 欢迎搞事

https://github.com/hioo520/collections-plug.git
https://gitee.com/hihuzi-top/collections-plug.git
<dependency>
 <groupId>com.github.hioo520</groupId>
 <artifactId>collections-plus</artifactId>
 <version>1.4.5</version>
</dependency>

莫忘了点赞

好东西 想着就发出来了!!!欢迎来事!!!

一直会更新 的!!

相关推荐

再说圆的面积-蒙特卡洛(蒙特卡洛方法求圆周率的matlab程序)

在微积分-圆的面积和周长(1)介绍微积分方法求解圆的面积,本文使用蒙特卡洛方法求解圆面积。...

python编程:如何使用python代码绘制出哪些常见的机器学习图像?

专栏推荐...

python创建分类器小结(pytorch分类数据集创建)

简介:分类是指利用数据的特性将其分成若干类型的过程。监督学习分类器就是用带标记的训练数据建立一个模型,然后对未知数据进行分类。...

matplotlib——绘制散点图(matplotlib散点图颜色和图例)

绘制散点图不同条件(维度)之间的内在关联关系观察数据的离散聚合程度...

python实现实时绘制数据(python如何绘制)

方法一importmatplotlib.pyplotaspltimportnumpyasnpimporttimefrommathimport*plt.ion()#...

简单学Python——matplotlib库3——绘制散点图

前面我们学习了用matplotlib绘制折线图,今天我们学习绘制散点图。其实简单的散点图与折线图的语法基本相同,只是作图函数由plot()变成了scatter()。下面就绘制一个散点图:import...

数据分析-相关性分析可视化(相关性分析数据处理)

前面介绍了相关性分析的原理、流程和常用的皮尔逊相关系数和斯皮尔曼相关系数,具体可以参考...

免费Python机器学习课程一:线性回归算法

学习线性回归的概念并从头开始在python中开发完整的线性回归算法最基本的机器学习算法必须是具有单个变量的线性回归算法。如今,可用的高级机器学习算法,库和技术如此之多,以至于线性回归似乎并不重要。但是...

用Python进行机器学习(2)之逻辑回归

前面介绍了线性回归,本次介绍的是逻辑回归。逻辑回归虽然名字里面带有“回归”两个字,但是它是一种分类算法,通常用于解决二分类问题,比如某个邮件是否是广告邮件,比如某个评价是否为正向的评价。逻辑回归也可以...

【Python机器学习系列】拟合和回归傻傻分不清?一文带你彻底搞懂

一、拟合和回归的区别拟合...

推荐2个十分好用的pandas数据探索分析神器

作者:俊欣来源:关于数据分析与可视化...

向量数据库:解锁大模型记忆的关键!选型指南+实战案例全解析

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在...

用Python进行机器学习(11)-主成分分析PCA

我们在机器学习中有时候需要处理很多个参数,但是这些参数有时候彼此之间是有着各种关系的,这个时候我们就会想:是否可以找到一种方式来降低参数的个数呢?这就是今天我们要介绍的主成分分析,英文是Princip...

神经网络基础深度解析:从感知机到反向传播

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在...

Python实现基于机器学习的RFM模型

CDA数据分析师出品作者:CDALevelⅠ持证人岗位:数据分析师行业:大数据...

取消回复欢迎 发表评论: