高分求ibatis级联查询
之前没接触过ibatis,所以麻烦诸位老鸟能否给个如下的实际代码范例:user表: int id,int address_id,String name
address表: int id, String addressName
user表中的address_id关联到address的id
请问beans该如何写,sqlmap.xml中应该如何写,感谢~ --------------------编程问答-------------------- 好多分啊。 --------------------编程问答-------------------- 直接让我写出来很困难,但可以借助工具。下一个eclipse插件——Abator。专门生成ibatis相关的代码和配置文件。帮你搞定数据库层。我们公司项目就采用了这个。高效! --------------------编程问答-------------------- --------------------编程问答-------------------- ibatis就是直接写sql语句的,对于多表的,最好不要用ibatis的在一个属性上去做子查询,就是你所说的在sqlmap.xml中进行配置,如下:
<resultMap id="xx" class="yy">
<result property="address" column="address" select="address.select" />
</resultMap>
<select id="address.select"></select>
这样做会有性能问题,直接用sql做表连接最好,至于beans可有可无,用Map就可
select * from user a,address b where a.address_id=b.id--------------------编程问答-------------------- 我给你找个例子 等下哈。 --------------------编程问答-------------------- 首先建立基本类,既然你想取User的address信息。那么User类应该有address属性。
--------------------编程问答-------------------- 如果一个人有多个地址,也就是一对多,那么这样建立配置文件:
package ibatis.model;
import java.io.*;
import java.util.*;
public class User implements Serializable{
private Integer id;
private String name;
private List addresses;
public List getAddresses() {
return addresses;
}
public void setAddresses(List addresses) {
this.addresses = addresses;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
--------------------编程问答-------------------- 学习了。 --------------------编程问答-------------------- 给你查了半天,到现在也不结贴,不厚道哦。 --------------------编程问答-------------------- --------------------编程问答-------------------- 6-7就是答案,给他分吧!这个就是所谓的ibatis延迟加载!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<typeAlias alias="User" type="ibatis.model.User"/>
<resultMap id="get-user-result" class="user">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="addresses" column="address_id"
select="getAddressById"/>
</resultMap>
<select id="getUsers"
resultMap="get-user-result">
<![CDATA[
select
id,
name
from t_user
]]>
</select>
<select id="getAddressById"
parameterClass="int"
resultClass="java.lang.String">
<![CDATA[
select
addressName
from t_address
where id = #id#
]]>
</select>
</sqlMap>
补充:Java , Java SE