ibatis按照id查询几个表的信息,如果将几个表的信息都放在一个对象中,如返回memberInfo对象,这个对象中包
ibatis按照id查询几个表的信息,如果将几个表的信息都放在一个对象中,如返回memberInfo对象,这个对象中包含一个会员基本信息,一个会员附加信息,还有一个Lis...
ibatis按照id查询几个表的信息,如果将几个表的信息都放在一个对象中,如返回memberInfo对象,这个对象中包含一个会员基本信息,一个会员附加信息,还有一个List类型的会员卡信息(可能多张卡),怎么处理呢?或者有什么更好的方法来处理返回的对象中含有的List呢,求高手解答,谢谢
是不是可以在类中定义一个list<会员卡>数组呢 展开
是不是可以在类中定义一个list<会员卡>数组呢 展开
1个回答
展开全部
可以使用关联查询
resultMap中这样写
<resultMap id="xxxid" class="packagename.memberInfo">
<!-- 此处省略其他正常存放的属性-->
<result column="memberID" property="cardList" select="Card.findByMenberID"/>
</resultMap>
然后在查询卡的map中添加一个这样的<select/>
<select id="findByMenberID" paramterClass="java.lang.Long" resultMap="card">
select colA,colB.... from TABLE_CARD where menber_ID=#value:DECIMAL#
</select>
这里有几个假设,
1.存放会员的表中有一列menberID,这个是主键,外键是存放CARD的表中的menber_id(不一定数据库层面有主外建关系,只要有这个逻辑层面的关联关系就ok)
2.查询CARD表的map放在名字为Card的命名空间下
3.menberInfo中存放card的List属性名为cardList
将我假设的名称改为你实际的名称就ok。
PS:代码是纯手写的,可能有拼写错误啥的,能看懂就好,别复制粘贴。
resultMap中这样写
<resultMap id="xxxid" class="packagename.memberInfo">
<!-- 此处省略其他正常存放的属性-->
<result column="memberID" property="cardList" select="Card.findByMenberID"/>
</resultMap>
然后在查询卡的map中添加一个这样的<select/>
<select id="findByMenberID" paramterClass="java.lang.Long" resultMap="card">
select colA,colB.... from TABLE_CARD where menber_ID=#value:DECIMAL#
</select>
这里有几个假设,
1.存放会员的表中有一列menberID,这个是主键,外键是存放CARD的表中的menber_id(不一定数据库层面有主外建关系,只要有这个逻辑层面的关联关系就ok)
2.查询CARD表的map放在名字为Card的命名空间下
3.menberInfo中存放card的List属性名为cardList
将我假设的名称改为你实际的名称就ok。
PS:代码是纯手写的,可能有拼写错误啥的,能看懂就好,别复制粘贴。
更多追问追答
追问
嗯,谢谢!那我需要写几个resultMap呢?service层需要返回memberInfo这个对象,那我调用dao层的时候要在dao层写几个查询方法呢?
追答
一个DAO方法,findByMenberID这个是被动调用的,resultMap中那样子写的话,DAO查询出menberInfo对象后会根据关联条件,每个menber_id都查出一个对应的List,这个过程是自动的,当然,有可能有缓存存在,你使用List的时候才会去真正查。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询