mybatis嵌套查询

qirmii 2017-11-28 06:19:03
数据库表:
approve表 id , case_id , approve_type
approve_suggest表 id , approve_id , remark , create_time

1. 一(approve)对多(approve_suggest)的关系
2. 按照approve_type又可以分为多种approve记录

pojo:
ApproveList.java
private String id;
private String approveType;
private List<ApproveContent> appConts;

ApproveContent.java
private String id;
private String remark;
private Date create_time;

Mapper.java
List<ApproveList> queryAllApprove(@Param("caseId")String caseId);

怎么写xml。。。。
...全文
527 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
missMeyo 2017-12-04
  • 打赏
  • 举报
回复
最后实现还是简单的一对多的查询。
missMeyo 2017-12-01
  • 打赏
  • 举报
回复
http://blog.csdn.net/jiangpeng59/article/details/51339710 按例子抄都不会?
Edward_S_Y 2017-12-01
  • 打赏
  • 举报
回复
引用 5 楼 qirmii 的回复:
[quote=引用 3 楼 SongYou05 的回复:] <!--mybatis进行一对多查询返回结果集--> <select id="queryAllApprove" resultMap="ApproveList"> select * from approve app, approve_suggest app_s where app.app_list_id=app_s.approve_id and app.case_id=#{caseId} </select> <!-- 结果集内容--> <resultMap type="pojo.ApproveList" id="ApproveList"> <!--ApproveList实体属性和表对应的字段的映射 --> <id property="id" column="app_list_id"/> <result property="case_id" column="case_id"/> <result property="approveType" column="approveType"/> <!-- ApproveList中属性集合的实体与表对应的字段映射 --> <collection property="appConts" ofType="pojo.ApproveContent"> <id property="id" column="app_con_id"/> <result property="approve_id " column="approve_id"/> <result property="remark" column="remark"/> <result property="create_time" column="create_time"/> </collection> </resultMap> 两个实体里是不是缺少属性啊,ApproveList里缺了一个case_id属性,ApproveContent里缺少了一个approve_id 属性,没有进行测试,可以试试,不行的话微调一下应该就可以了!
查出来咋成这样子了↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 我写的xml这样的,请问是不是有问题啊, [/quote] 你的意思是想一次查出来审批的集合、审批信息的集合?下面的应该可以,可以试试! <resultMap id="approve" type="pojo.ApproveList" > <id property="id" column="app_list_id"/> <result property="case_id" column="case_id"/> <result property="approveType" column="approveType"/> </resultMap> <!-- 审批类型返回集合 --> <resultMap id="ApproveList" type="pojo.ApproveList" extends="approve"> <collection property="appConts" resultMap="appContsList"></collection> </resultMap> <!-- 审批信息返回集合 --> <resultMap id="appContsList" type="pojo.ApproveContent"> <id property="id" column="app_con_id"/> <result property="approve_id " column="approve_id"/> <result property="remark" column="remark"/> <result property="create_time" column="create_time"/> </resultMap> <select id="queryAllApprove" resultMap="ApproveList"> select * from approve app, approve_suggest app_s where app.app_list_id=app_s.approve_id and app.case_id=#{caseId} </select>
qirmii 2017-12-01
  • 打赏
  • 举报
回复
等闲了得好好总结一下这种情况,不知道会不会有没考虑到的地方。
什么都不能 2017-12-01
  • 打赏
  • 举报
回复
其实你的主查询应该是审批类型 用审批类型数据左关联审批明细 resultMap 外面还有一层ApproveList
m20143310 2017-12-01
  • 打赏
  • 举报
回复
学习了。。。。!
qirmii 2017-12-01
  • 打赏
  • 举报
回复
感谢大家的帮忙,不容易啊。。。
qirmii 2017-12-01
  • 打赏
  • 举报
回复
引用 11 楼 qq_41228556 的回复:
<resultMap type="com.zyxy.vo.CaseProgressListVo" id="ApproveList"> <id property="id" column="id" /> <result property="approveType" column="approve_type" /> <collection property="appConts" javaType="java.util.ArrayList" ofType="com.zyxy.common.ProgressContentVO" column="id" select="dosome"></collection> </resultMap> <select id="dosome" resultType=""com.zyxy.common.ProgressContentVO" parameterType="java.lang.Integer"> select id, remark, create_time as createTime from case_approve_suggest a where id =#{id} </select> <select id="findDeptById" parameterType="java.lang.Integer" resultMap="ApproveList"> select * from case_approve a where a.id=#{id} </select>
弄了三天,终于弄出来了,感谢大大的帮助!
qirmii 2017-12-01
  • 打赏
  • 举报
回复
引用 11 楼 qq_41228556 的回复:
<resultMap type="com.zyxy.vo.CaseProgressListVo" id="ApproveList"> <id property="id" column="id" /> <result property="approveType" column="approve_type" /> <collection property="appConts" javaType="java.util.ArrayList" ofType="com.zyxy.common.ProgressContentVO" column="id" select="dosome"></collection> </resultMap> <select id="dosome" resultType=""com.zyxy.common.ProgressContentVO" parameterType="java.lang.Integer"> select id, remark, create_time as createTime from case_approve_suggest a where id =#{id} </select> <select id="findDeptById" parameterType="java.lang.Integer" resultMap="ApproveList"> select * from case_approve a where a.id=#{id} </select>
<resultMap type="com.zyxy.common.vo.CaseProgressListVO" id="approveList"> <id property="id" column="id"/> <result property="approveType" column="approve_type"/> <collection property="progressCont" javaType="java.util.ArrayList" ofType="com.zyxy.common.vo.ProgressContentVO" column="id" select="queryApproveCont"></collection> </resultMap> <select id="queryApproveCont" resultType="com.zyxy.common.vo.ProgressContentVO"> SELECT mark mark, create_time createTime FROM case_approve_suggest WHERE approve_id=#{approveId} </select> <select id="queryCaseProgress" resultMap="approveList"> SELECT ca.id id, ca.approve_type approveType FROM case_approve ca LEFT JOIN case_request_info cri ON cri.id=ca.request_id WHERE ca.case_id=#{caseId} AND cri.request_type=#{requestFlag} </select>
qq_41228556 2017-12-01
  • 打赏
  • 举报
回复
<resultMap type="com.zyxy.vo.CaseProgressListVo" id="ApproveList"> <id property="id" column="id" /> <result property="approveType" column="approve_type" /> <collection property="appConts" javaType="java.util.ArrayList" ofType="com.zyxy.common.ProgressContentVO" column="id" select="dosome"></collection> </resultMap> <select id="dosome" resultType=""com.zyxy.common.ProgressContentVO" parameterType="java.lang.Integer"> select id, remark, create_time as createTime from case_approve_suggest a where id =#{id} </select> <select id="findDeptById" parameterType="java.lang.Integer" resultMap="ApproveList"> select * from case_approve a where a.id=#{id} </select>
qirmii 2017-12-01
  • 打赏
  • 举报
回复
引用 9 楼 missMeyo 的回复:
http://blog.csdn.net/jiangpeng59/article/details/51339710 按例子抄都不会?
我要查的是一个集合 审批列表List<Approve>,每个审批都有对应的审批类型type和审批内容List<ApproveConts>,审批内容ApproveConts包含了审批时间time,审批标记mark。 例子都是相当于查一个审批类型的内容,不是所有的审批类型的内容。 Approve.java private String type; private String List<ApproveConts> 那些例子只是查询一个Approve的内容,我查的是包含多个Approve的列表。
qirmii 2017-11-30
  • 打赏
  • 举报
回复
引用 2 楼 missMeyo 的回复:
搜索mybatis高级查询即可。
查了,还是不会呀
qirmii 2017-11-30
  • 打赏
  • 举报
回复
引用 3 楼 SongYou05 的回复:
<!--mybatis进行一对多查询返回结果集-->
<select id="queryAllApprove" resultMap="ApproveList">
select * from approve app, approve_suggest app_s where app.app_list_id=app_s.approve_id and app.case_id=#{caseId}
</select>
<!-- 结果集内容-->
<resultMap type="pojo.ApproveList" id="ApproveList">
<!--ApproveList实体属性和表对应的字段的映射 -->
<id property="id" column="app_list_id"/>
<result property="case_id" column="case_id"/>
<result property="approveType" column="approveType"/>
<!-- ApproveList中属性集合的实体与表对应的字段映射 -->
<collection property="appConts" ofType="pojo.ApproveContent">
<id property="id" column="app_con_id"/>
<result property="approve_id " column="approve_id"/>
<result property="remark" column="remark"/>
<result property="create_time" column="create_time"/>
</collection>
</resultMap>
两个实体里是不是缺少属性啊,ApproveList里缺了一个case_id属性,ApproveContent里缺少了一个approve_id 属性,没有进行测试,可以试试,不行的话微调一下应该就可以了!


查出来咋成这样子了↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


我写的xml这样的,请问是不是有问题啊,
qirmii 2017-11-30
  • 打赏
  • 举报
回复
引用 1 楼 carl6148 的回复:
兄弟,问题描述不清,具体要查什么啊!?
有多种审批,每一钟审批有审批的时间和审批的标注,我要查每一种审批的内容。 查出来这个样子↓↓↓↓↓↓↓ approveType1: approveCont1: remark11 ,time11; approveCont2: remark12 ,time12; approveType2: approveCont1: remark21 ,time21; approveCont2: remark22 ,time22;
Edward_S_Y 2017-11-29
  • 打赏
  • 举报
回复
<!--mybatis进行一对多查询返回结果集--> <select id="queryAllApprove" resultMap="ApproveList"> select * from approve app, approve_suggest app_s where app.app_list_id=app_s.approve_id and app.case_id=#{caseId} </select> <!-- 结果集内容--> <resultMap type="pojo.ApproveList" id="ApproveList"> <!--ApproveList实体属性和表对应的字段的映射 --> <id property="id" column="app_list_id"/> <result property="case_id" column="case_id"/> <result property="approveType" column="approveType"/> <!-- ApproveList中属性集合的实体与表对应的字段映射 --> <collection property="appConts" ofType="pojo.ApproveContent"> <id property="id" column="app_con_id"/> <result property="approve_id " column="approve_id"/> <result property="remark" column="remark"/> <result property="create_time" column="create_time"/> </collection> </resultMap> 两个实体里是不是缺少属性啊,ApproveList里缺了一个case_id属性,ApproveContent里缺少了一个approve_id 属性,没有进行测试,可以试试,不行的话微调一下应该就可以了!
missMeyo 2017-11-29
  • 打赏
  • 举报
回复
搜索mybatis高级查询即可。
扶瑶直上 2017-11-28
  • 打赏
  • 举报
回复
兄弟,问题描述不清,具体要查什么啊!?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧