在关联查询中此处介绍两种情况:一对一和一对多
1.一对一
假设数据库中有表person和card;其中person表的字段有pid,pname,page,psex,cid;card表有字段cid,cnum;
如实现在person表和身份证两张表中查询某个人的姓名和身份证号码;(属于1对1)
方法1:用扩展类的方式将多表的查询转换成了单类的查询(推荐)
1-扩展一个封装类PersonVo extends Person ,在类中扩展person不具有的属性;此处是向personVo中加入cnum属性;
2-定义接口方法 ,注意:返回值类型时扩展类
3-封装sql语句
(1)mapper.xml配置文件:
<select id="selectpersonAndCardByPid" parameterType="int"
resultType="personVo">
SELECT p.*,c.cnum FROM person p,card c WHERE p.cid=c.cid
and pid=#{value}
</select>
(2)mapper接口中定义的方法:
public List<PersonVo> selectpersonAndCardByPid(int pid);
(3)使用junit测试结果:
@Test
public void testselectpersonAndCardByPid(){//关联查询一对1
List<PersonVo> l=pm.selectpersonAndCardByPid(1);
System.out.println(l.size());
System.out.println();
for (PersonVo personVo : l) {
System.out.println(personVo.getPna