1、两个相互关联的对象
public class Classes {
private int id;
private String cname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
}
public class Student {
private int id;
private String name;
private String sex;
private Classes classes;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Classes getClasses() {
return classes;
}
public void setClasses(Classes classes) {
this.classes = classes;
}
}
从student 中关联到class 对象
Student s = (Student)sqlMapper.queryForObject("findStudent", 1);
System.out.println(s.getName()+"属于班级:"+s.getClasses().getCname());
使用别名映射
<select id="findStudent" parameterClass="int" resultClass="Student">
select
s.name,
s.sex,
s.cid as "classes.id",
c.cname as "classes.cname"
from t_student s,t_classes c
where s.cid = c.id and s.id = #id#
</select>
a插入的用点导航
<insert id="saveStudent" parameterClass="Student">
insert into t_student values (null,#name#,#sex#,#classes.id#)
</insert>
b写两条sql使用resultMap映射
<resultMap class="Student" id="findStudent-result">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="sex" column="sex"/>
<result property="classes" column="cid" select="findClassesById"/>
</resultMap>
<select id="findStudent" parameterClass="int" resultMap="findStudent-result">
select
*
from t_student
where id = #id#
</select>
<select id="findClassesById" parameterClass="int" resultClass="Classes">
select * from t_classes where id = #cid#
</select>
2、
分享到:
相关推荐
- 使用`EXISTS`子查询通常比直接关联查询更高效,尤其是在数据量大的情况下。 - 避免在`WHERE`子句中使用多个条件或`OR`操作符,而是应该使用`IN`操作符或者`UNION ALL`合并多个查询。 3. Struts、Spring与Ibatis...
总的来说,使用Ibatis操作两个有关系的表涉及了数据库设计、Java对象模型构建、XML配置、SQL编写等多个方面。熟练掌握这些技能,将有助于提升你在数据库操作上的专业素养。通过实践和理解Ibatis提供的各种映射策略,...
2. **参数映射**: 使用`<param>`标签将Java对象的属性与SQL中的参数关联。 3. **结果映射**: 使用`<resultMap>`标签定义结果集的映射规则,将数据库查询结果转换为Java对象。 4. **事务管理**: Ibatis可以配合Spring...
Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义类型处理器、复杂关联映射等。 7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则...
3. **结果映射**: IBatis可以自动将查询结果映射到Java对象,也可以自定义映射规则,处理复杂的数据类型和关联关系。 4. **事务管理**: IBatis提供了简单的事务控制,可以通过编程方式或者配置方式来管理事务的提交...
iBATIS提供了集合映射和关联映射的方式来处理这些关系,使我们能够在Java对象中方便地操作这些复杂的数据结构。 其次,属性设置详解涉及到的是如何在iBATIS中设置和获取Java对象的属性,以及如何将这些属性与数据库...
本教程聚焦于如何使用Ibatis查询指定ID的单个对象,这对于日常的数据检索工作尤为重要。 首先,理解Ibatis的基本架构。Ibatis不是一个完整的ORM(对象关系映射)框架,而是介于SQL和Java之间的桥梁,允许开发者编写...
此外,ibatis还支持延迟加载,即只有在真正需要时才加载关联对象,从而避免了不必要的数据加载和内存消耗。 ### ibatis高级特性 #### 动态SQL ibatis的一个强大特性是动态SQL。它允许开发者在运行时根据不同的...
### iBatis.Net详细使用手册知识点汇总 #### 1. iBatis.Net概述 - **定义**: iBatis.Net是一种轻量级的框架,用于.NET应用程序中的数据访问层。它并非传统的ORM(对象关系映射)工具,而是介于纯ADO.NET与全功能ORM...
5. **结果集映射**:iBATIS能自动将查询结果映射到Java对象,包括单一结果、多个结果集以及复杂的一对多关联映射。 6. **参数映射**:iBATIS可以将Java方法的参数自动映射到SQL的参数,减少了代码量,提高了开发...
本文将围绕“IBATIS开发使用实例”这一主题,深入解析复杂SQL查询的应用,尤其是如何利用SQL进行多表关联、条件筛选以及聚合函数的使用。 ### IBATIS简介 IBATIS,现被称为MyBatis,是一种优秀的持久层框架,它...
2. 结果映射:使用 `<resultMap>` 定义结果集映射规则,可以进行复杂的列名和属性名映射,支持关联对象映射。 六、事务管理 Ibatis 支持编程式和声明式两种事务管理方式。编程式事务管理通过 `SqlSession` 的 begin...
延迟加载只在访问关联对象时才执行SQL,而级联加载则在获取主对象时一起加载所有关联对象。这需要在`<collection>`标签中设置`fetchType`属性。 ```xml ``` 6. **缓存策略** iBatis还支持缓存机制,可以将...
3. **结果集映射**:详细解释了如何通过ResultMap定义结果集到Java对象的映射,包括基本类型、复杂类型、关联映射等。 4. **参数映射**:介绍如何使用parameterMap来指定输入参数,包括基本类型、Map对象、JavaBean...
通过阅读文档,你可以了解如何配置Ibatis、创建Mapper接口和XML映射文件,以及如何处理复杂的查询和关联。 在说明文档中,通常会包含以下内容: 1. 安装和配置:介绍如何将Ibatis集成到项目中,包括Maven或Gradle...
以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索映射SQL语句的方法、命名空间的注意事项、作用域与生命周期的解释、mapper配置...
Ibatis会自动将这些方法与XML配置文件中的SQL语句关联起来。 ## 3. Ibatis的主要功能 #### 3.1 动态SQL Ibatis支持动态SQL,允许在XML配置文件中根据条件拼接SQL语句,极大地提高了SQL的灵活性和可维护性。 ####...