MyBatis+Oracle 结果集查询+分页

取个昵称咋这么难啊 发布于 2016/10/31 10:47
阅读 1K+
收藏 0

一张床位表+一个就诊记录表+患者表+医嘱记录

由床位表的CaseNo字段可以查询到就诊记录

由床位的MrNo可以查询到患者

由床位的CaseNo可以查到多个医嘱项目

写一个分页的查询语句

例如查询10条数据,返回的map对象里面包含4个对象(床位+就诊记录+患者+List<医嘱>)

加载中
0
szwx855
szwx855
<!-- Result Map -->
    <!-- resultmap -->
    <resultMap id="resultMap" type="xxxxx">
        <id property="id" column="id" />
        <result property="caseNo" column="caseNo" />
        <result property="mrNo" column="mrNo" />        
        <collection property="jiuzhengList" resultMap="jiuzhengMap" />
        <collection property="huanzheList" resultMap="huanzheMap" />
        <collection property="yizhuList" resultMap="yizhuMap" />
    </resultMap>

 <!-- 就诊resultmap -->
    <resultMap id="jiuzhengMap" type="xxxx">
        <id property="id" column="id" />
        <result property="caseNo" column="caseNo" />
    </resultMap>

    <!-- 患者resultmap -->
    <resultMap id="huanzheMap" type="xxxx">
        <id property="id" column="id" />
        <result property="name" column="name" />
        <result property="mrNo" column="mrNo" />
    </resultMap>


    <!-- 医嘱resultmap -->
    <resultMap id="yizhu" type="xxxx">
        <id property="id" column="id" />
        <result property="caseNo" column="caseNo" />
    </resultMap>


   <!-- 分页 -->
   <select .... resultMap="resultMap">  
   
   
select * from (

select rownum as r ,count(*) over() total,a.* from (

select * from 床位A,就诊B,患者C,医嘱D 

where a.CaseNo = b.CaseNo 

and a.MrNo= c.MrNo

and a.CaseNo = d.CaseNo??

))b

where b.r > 0 and b.r <10


   
   </select>
   
pojo:

List<xxx> jiuzhengList;

List<xxx> yizhuList;

List<xxx> huanzheList;



0
szwx855
szwx855
分页内注意排序,否则myibatis可能少记录的BUG会出现 。
szwx855
szwx855
回复 @和你有个约定 : 只需要pojo定义即可,另外表中需要有笛卡尔积,就会自动映射为List
取个昵称咋这么难啊
取个昵称咋这么难啊
这种嵌套结果集查询,只需要在POJO类中定义嵌套的对象吗?还是表结构也需要定义相应的字段?
返回顶部
顶部