功能描述

由于查询字段和表名都要支持动态配置,故查询返回值需要为List<Map<String,Object>>,不定义值对象。

查询结果列需要支持自动映射,不配置类属性和数据库字段的映射关系。

查询需要支持一对多关联查询。

实现思路

Mybatis支持2种常见返回值。

1. 在resultType中配置一个Pojo类,Mybatis会自动根据命名规则将SQL语句中的字段转换成pojo类中的属性。

2. 使用resultMap,一般是需要手供配置映射关系。

要实现描述的功能,可以使用resultMap的collection元素,并且将resultMap的autoMapping="true"让resultMap支持自动映射了(默认是false)并将type="map"。然后在SQL中进行表关联。就可以将返回值映射为Map了。

实现步骤

resultMap和SQL配置。代码参数如下:

    <resultMap id="listDataMap" type="map" autoMapping="true" ><collection property="entryList" ofType="com.ruoyi.quartz.domain.SynDataEntry" autoMapping="true" javaType="list"></collection></resultMap><select id="listDataByConfig" resultMap="listDataMap">select<foreach collection="objectConfig.synFieldConfigList"item="item" open="" close="" separator=","><if test='(item.srcField != null and item.srcField.trim() != "")and (item.srcType == null or (item.srcType != null and !item.srcType.trim().toUpperCase().contains("LIST")))'>t.${item.srcField}</if></foreach>,de.*from ${objectConfig.srcObject} tleft join syn_data_entry de on de.object_id = ${objectConfig.id} and de.syn_data_id = t.id<trim prefix="WHERE" suffixOverrides="and">t.task_id = #{task.id} and<foreach collection="objectConfig.synFieldConfigList"item="item" open="" close="" separator=" and "><if test="item.conditional == '1'.toString()and item.targetValue != nulland item.targetValue != ''and item.delFlag == '0'.toString()and item.srcField != nulland item.srcField != ''">t.${item.srcField} ${item.targetValue}</if></foreach></trim></select>

上面的SQL,select后面的字段名,表名都是根据配置对象动态生成的。

objectConfig对应的是表配置对象。

synFieldConfigList对应的是字段配置对象

动态的数据表可能还会存在子表关联数据,也就是sql中的syn_data_entry表。

Mapper代码参考:

    /*** 根据对象配置,动态查询数据。还会读取同步数据子表。<br>* @author namelessmyth* @return List<Map<String,Object>> 子表的key为entryList,类型为List<SynDataEntry>*/public List<Map<String,Object>> listDataByConfig(@Param("task") SynTask task,@Param("objectConfig") SynObjectConfig objectConfig);

Mybatis一对多关联查询,返回值Map,字段自动映射相关推荐

  1. mybatis一对多关联查询两种方式

    mybatis一对多关联查询两种方式 前提: 方式一: 方式二: 前提: 现在有两张表,学生表跟教师表,一个教师对应多个学生 教师表: CREATE TABLE `teacher` (`id` int ...

  2. mybatis一对多关联查询_Mybatis 一对一、一对多的关联查询 ?

    <mapper namespace="com.lcb.mapping.userMapper"> <!--association 一对一关联查询 --> &l ...

  3. mybatis一对多关联查询将结果封装到嵌套list

    DishDto中有个List集合保存DishFlavor对象,DishFlavor根据关联查询获得,一个dish对应多个dishflavor.想要联合查询自动将DishFlavor封装成集合需要用co ...

  4. mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析

    推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...

  5. 15、mybatis一对多关联查询 collection定义关联集合封装规则及懒加载

    文章目录 1.collection定义关联集合封装规则单步查询 1).Dept增加集合属性 2).DeptMapper增加查询接口 3).DeptMapper.xml增加collection配置 4) ...

  6. Mybatis 一对多关联查询collection用法

    使用resultMap, select 标签, resultMap的中的collection表示一对多,column对应select标签中的sql里的字段或者别名,当两个表字段名称有相同的情况下,可以 ...

  7. Mybatis一对多关联查询详解

    要点 在Student类中添加List<Classes> classList 属性 在Classes类中添加List<Student> students属性 在ClassesM ...

  8. MyBatis查询,返回值Map或ListMap

    https://www.cnblogs.com/xiaoliu66007/p/7908181.html 一.返回值Map 1.mapper.xml [html] view plain copy < ...

  9. Mybatis多表关联查询(一对多关联查询)

    1.Mybatis一级缓存与二级缓存 目的:提高查询效率,降低数据库查询压力,提升系统整体性能. 一级缓存:默认开启,Session级别,同一个会话内生效. 命中缓存的情况:statementid.S ...

最新文章

  1. 数据结构 算法与应用C 语言描述第六章,数据结构算法与应用-C语言描述002.pdf
  2. python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解
  3. python 链式比较 2._特色的Python序列解包、链式赋值、链式比较
  4. 蓝桥杯_算法训练_动态数组使用
  5. Product description search in opportunity line item
  6. 增删改查(curd)
  7. 最全ACM常用STL
  8. linux系统挂载NTFS格式文件系统
  9. 分布式数据库中全局唯一主键
  10. sonic——可替代Elasticsearch的简单搜索引擎
  11. 学习webpack系列之二 ---- (管理静态资源)
  12. WEB前端视频教程网站推荐
  13. FineReport学习(一)——常用操作介绍
  14. Java实现发送短信
  15. matlab无法用mcc,使用matlab的mcc时为什么会出现fopen错误?
  16. 4. ElasticSearch——aggregations聚合分析
  17. 有了自动驾驶和共享无人车,未来出行将会是什么样的体验?
  18. 泛域名证书ACME 阿里云域名
  19. 【ArnoldC4D】1.ArnoldToC4D_基本概念及原理(sampling_and_camera_sampl)
  20. git修改已提交的信息

热门文章

  1. ios隐藏功能-APP因第三方支付被拒
  2. 虚拟机重置root密码
  3. html中垂直线,如何在HTML中创建一条垂直线
  4. 【文献阅读12】:稀疏ReRAM引擎:基于ReRAM的高效稀疏神经网络加速架构
  5. 乐视深陷质量危机:被曝采用手机电池做移动电源
  6. 大模型中的「罗翔老师」!北大兔展联合团队搞出ChatLaw,发布即登顶热榜,可提供法律咨询...
  7. mac配置idea maven
  8. 生产环境亿级用户并发发券记录
  9. 接棒“雪花”登陆纽交所,游戏引擎商Unity能否续获资本芳心?
  10. 为什么建造师「市政专业」如此吃香?