ibatis学习(2)一对多关系

[size=large]ibatis一对多关系配置文件写法[/size]

上节已经写了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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值