[size=large]ibatis一对多关系配置文件写法[/size]
上节已经写了ibatis的相关配置文件和spring的集成,此处不多加赘述,主要看看配置文件该如何写。
1、新建两个类,一个Account包含多个OrderInfo
2、account.xml
3、测试类中main()中的内容:
上节已经写了ibatis的相关配置文件和spring的集成,此处不多加赘述,主要看看配置文件该如何写。
1、新建两个类,一个Account包含多个OrderInfo
package ibatis.one.many;
import java.util.List;
public class Account {
private int accountId;
private String accountNo;
private List orderList;
public int getAccountId() {
return accountId;
}
public void setAccountId(int accountId) {
this.accountId = accountId;
}
public String getAccountNo() {
return accountNo;
}
public void setAccountNo(String accountNo) {
this.accountNo = accountNo;
}
public List getOrderList() {
return orderList;
}
public void setOrderList(List orderList) {
this.orderList = orderList;
}
}
package ibatis.one.many;
import java.util.List;
public class OrderInfo {
private int orderId;
private int accountId;
private String orederName;
public int getOrderId() {
return orderId;
}
public void setOrderId(int orderId) {
this.orderId = orderId;
}
public String getOrederName() {
return orederName;
}
public void setOrederName(String orederName) {
this.orederName = orederName;
}
public int getAccountId() {
return accountId;
}
public void setAccountId(int accountId) {
this.accountId = accountId;
}
}
2、account.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="account">
<typeAlias alias="Account" type="ibatis.one.many.Account" />
<typeAlias alias="OrderInfo" type="ibatis.one.many.OrderInfo" />
<resultMap class="Account" id="accountResultMap">
<result property="accountId" column="accountId" />
<result property="accountNo" column="accountNo" />
<result property="orderList" column="accountId"
select="getOrdersByAccountId" />
</resultMap>
<resultMap class="OrderInfo" id="orderResultMap">
<result property="orderId" column="orderId" />
<result property="orederName" column="orederName" />
<result property="accountId" column="accountId" />
</resultMap>
<select id="getAccounts" resultMap="accountResultMap">
<![CDATA[select * from Account]]>
</select>
<select id="getOrdersByAccountId" resultMap="orderResultMap">
<![CDATA[
select o.* from Account a,orderinfo o where o.accountId = a.accountId and a.accountId=#value# ]]>
</select>
</sqlMap>
3、测试类中main()中的内容:
try {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
SqlMapClient sqlMap=(SqlMapClient) ctx.getBean("sqlMapClient");
sqlMap.flushDataCache();
System.out.println("sqlMap=="+sqlMap);
List accountList = sqlMap.queryForList("getAccounts",1);
System.out.println("accountList=="+accountList.size());
for(int i=0;i<accountList.size();i++){
Account account = (Account) accountList.get(i);
System.out.println(account.getAccountId()+"......."+account.getAccountNo());
List orderList = account.getOrderList();
System.out.println("orderList==="+orderList);
for(int j=0;j<orderList.size();j++){
OrderInfo orderInfo = (OrderInfo) orderList.get(j);
System.out.println("orderInfo=="+orderInfo);
System.out.println(orderInfo.getOrderId()+"....."+orderInfo.getOrederName());
}
}
// Account account=(Account)sqlMap.queryForObject("getAccountInfoList", 1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}