ibatis一对多关系配置文件写法
上节已经写了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();
}
分享到:
相关推荐
2. **配置一对多关联** 在iBatis的映射文件中,我们需要为主表(一对一的一方)和从表(一对一的多方)分别创建`<resultMap>`。在主表的`<resultMap>`中,通过`<collection>`标签指定从表的映射信息,包括属性名、...
【ibatis学习总结】 在Java应用中,ORM(对象关系映射)框架是连接数据库与业务逻辑的关键。相比像Hibernate和Apache OJB这样的"一站式"ORM解决方案,iBATIS提供了一种更为灵活的"半自动化"策略。iBATIS允许开发者...
结果映射将查询结果与Java对象进行绑定,通过`<resultMap>`定义字段映射规则,包括简单的列名到字段名的映射,以及一对一、一对多等复杂关系的映射。 6. **事务管理** iBatis支持手动和自动事务管理,开发者可以...
- **结果映射**:理解如何将数据库查询结果自动映射到Java对象,包括一对一、一对多、多对多关系的映射。 - **参数映射**:学习如何传递参数到SQL语句中,包括简单的值、复杂对象和集合参数。 - **插件扩展**:了解...
iBatis 使用 `collection` 元素在 `resultMap` 中配置一对多关系。可以设置 `select` 属性,指定一个 SQL 语句来获取子记录集合。 3. **多对多映射**:这种关系更复杂,通常需要一个关联表来存储两个表的连接信息。...
- **一对多关联**:通过配置文件中的`<association>`标签定义一对多的关系映射。 - **一对一关联**:通过配置文件中的`<association>`标签定义一对一的关系映射。 ##### 2. 延迟加载 - 实现懒加载功能,只有当真正...
1对多关系的处理通常涉及到集合类型的映射,你可以从这个实例中学习如何配置和使用这种映射。 总的来说,这个压缩包为你提供了一个全面的iBatis学习路径,从基础到进阶,从理论到实践。通过深入阅读PDF文档,动手...
- **多对多映射**:在处理复杂关系时,iBatis提供了配置多对多关系的方法,使关联对象的处理变得简单。 总之,这份“iBatis 学习资料”将引导你从基础到进阶,全面掌握iBatis的使用,提升你在实际项目中的数据访问...
- **结果映射**:ResultMap用于将查询结果映射到Java对象,可以处理一对一、一对多、多对多等各种复杂的对象关系映射。 - **缓存机制**:Ibatis提供了本地缓存和二级缓存,能够提高数据读取速度,减少数据库压力。 ...
通过`<resultMap>`标签,你可以定义字段到属性的映射规则,支持一对一、一对多、多对一等多种复杂关系的映射。 在项目源码中,你会看到如何将这些概念应用到实际的项目中。例如,`log4j`的使用对于日志记录非常重要...
这篇“ibatis学习笔记(一)”可能是博主对Ibatis基础概念、安装配置以及基本使用的介绍,让我们通过标签“源码”和“工具”来深入探讨Ibatis的相关知识。 首先,Ibatis是一个轻量级的Java ORM(对象关系映射)框架...
**Struts2** 是一个强大的MVC框架,它在Struts1的基础上进行了很多改进,提供了更灵活的控制流程和丰富的插件支持。在Struts2中,Action类是业务逻辑的核心,通过配置ActionMapping来指定请求与Action之间的映射关系...
3. **结果映射**:使用定义结果集映射,可以将数据库查询结果自动转换为.NET对象,支持一对一、一对多、多对多等多种关系的映射。 4. **事务管理**:Ibatis.net提供了事务控制功能,可以在需要时开启或提交事务,...
6. **结果映射**:当查询结果复杂时,可以定义结果映射来处理一对一、一对多、多对多等关系,确保数据正确地转换为Java对象。 7. **动态SQL**:iBatis允许在XML映射文件中使用if、choose、when、otherwise、where、...
1.4 结果集映射:通过 `<resultMap>` 元素,定义了 SQL 查询结果如何映射到 Java 对象,支持一对一、一对多、多对多等复杂关系映射。 **2. Ibatis 工作原理** 2.1 配置:在启动时,Ibatis 读取配置文件,加载 SQL ...
5. 强大的功能:了解Ibatis的缓存机制、结果集映射(包括一对一、一对多、多对多)、延迟加载等功能,以及如何进行参数和结果的自定义类型处理器。 6. 集成与配置:学习如何将Ibatis框架集成到Spring等其他框架中,...
本文档旨在对iBATIS的学习进行深入的总结,帮助初学者快速上手。 一、iBATIS概述 iBATIS的核心理念是“SQL Map”,它将SQL与Java代码分离,通过XML配置文件或注解来定义SQL语句,实现了数据访问层的灵活定制。这...
9. **一对多、多对一关联映射**:在处理复杂关系时,Ibatis 提供了`<association>`和`<collection>`元素,用于映射一对一和一对多的关系,简化对象关系的构建。 10. **MyBatis Generator**:这是一个代码生成工具,...
一对多或多对一关系的处理是对象关系映射(ORM)中的常见问题,iBatis提供了优雅的方式来管理这些复杂的关系。而缓存机制则可以提高数据访问性能,通过存储已查询过的数据,减少数据库的访问次数。 `一个使用ibatis...