ibatis传递任意参数的多表查询方法有哪些?

2025-05-13 23:28:28
推荐回答(1个)
回答1:

如何定义多表查询
1)
添加Guojia.java类,只是一个普通的javabean,对应guojia表中各字段,及其setter,getter,无须像hibernate一样设置对应关系。
2)
添加guojia.xml,只须添加:

view plaincopy to clipboardprint?

















无须添加如查询之类的东西。
3)
在当前类hwj.java添加连合查询的表guojia的list属性,如下:
view plaincopy to clipboardprint?
private List guoList;
public List getGuoList() {
return guoList;
}
public void setGuoList(List guoList) {
this.guoList = guoList;
}
private List guoList;
public List getGuoList() {
return guoList;
}
public void setGuoList(List guoList) {
this.guoList = guoList;
}

4)
在当前表hwj.xml的resultMap中,添加,如下:
view plaincopy to clipboardprint?





















注意:resultMap="Guo.GuoResult"中的Guo对应上面guojia.xml中的namespace,GuoResult对应其resultMap的名.
5)
在sqlMapClient.xml导入guojia.xml
注意:
在resultMap中列出的各列,只能是select的各字段。不能多,也不能少。否则出错。
如:A表中有a,b两列。现select a from A。则resultMap只能列了关于a的列名—属性,不能多列b的东西,否则出错。

6)
若为三表连合查询,
1.对于第三个表的设置,跟上面设置第二个表一样。
2.同样,也只须在hwj.java,hwj.xml中进行相同的设置即可。
说明:
在页面显示时:
在hwj循环记录的iterator中,添加guojia,address各种的循环即可。
无须将address内嵌在guojia中:因为实际上hwj的查询语句查询出来是所有记录,guojia,address添加的循环,也只能循环一次,取一个值。
设置如下:
view plaincopy to clipboardprint?
<%-- guojia --%>


<%-- --%>


<%-- address --%>


<%-- --%>


<%-- guojia --%>


<%-- --%>


<%-- address --%>


<%-- --%>



(3)
resultMap中的的列与javaBean属性的对应关系,只能列出sql语句中select的字段,不能多也不能少,否则出错.----不关心sql语句中关联几个表.如下:
view plaincopy to clipboardprint?