- 浏览: 1057485 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (605)
- 数据挖掘 (22)
- spring (40)
- 工具使用 (39)
- java (137)
- JavaScript (40)
- webwork (12)
- web (120)
- 资源 (7)
- SSH (5)
- oracle (20)
- J2ME (1)
- 环境配置 (37)
- 项目管理 (29)
- mysql (14)
- struts (4)
- 项目总结 (27)
- ibatis学习 (33)
- 学习计划 (2)
- 缓存 (7)
- 重构 (3)
- Android (1)
- jquery (12)
- UML (3)
- 用户体验 (4)
- 习惯 (7)
- sakai (1)
- urlrewrite (4)
- rss (5)
- C plus plus (5)
- 算法 (5)
- 海量数据处理 (7)
- office(word、excel) (1)
- 面试题 (3)
- solr (8)
- 大数据 (2)
最新评论
-
hujin19861102:
截图看不见,最后一个webwrok的配置看不见
Ext+Webwork+Json 实现分页表格查询效果 -
蜗牛笔:
弱弱的问一句,要是分出来的词在词典中没有,那么两部分的pos- ...
ICTCLAS 中科院分词系统 -
weipeng1986:
授人予鱼不如授人予鱼,我想问你的是你是怎么总结的。比如第四种情 ...
JAVA中字符串连接效率的测试 -
xiaoqiang2008:
执行两次的原因是什么,好像楼主没弄清楚啊!是不是在web.xm ...
关于Spring中用quartz定时器在定时到达时同时执行两次的问题 -
Kent_Mu:
...
ibatis-dynamic的用法
http://pan-java.iteye.com/blog/463951
iBatis的多表关联。
ibatis的表关联,和数据库语句无关,是在程序中,把若干语句的结果关联到一起。
这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便。
这里用表lock和key为例,一个lock可以配多个key。
现在可以代码中使用了
...
..
ibatis的表关联,和数据库语句无关,是在程序中,把若干语句的结果关联到一起。
这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便。
这里用表lock和key为例,一个lock可以配多个key。
- CREATE TABLE lock(
- id int,
- lockName varchar
- );
- CREATE TABLE key(
- id int,
- lockId int,
- keyName varchar
- );
CREATE TABLE lock( id int, lockName varchar ); CREATE TABLE key( id int, lockId int, keyName varchar );定义映射类
- package zzcv.dao.domain;
- public class Lock
- {
- private int id;
- private String lockName;
- private Object keys; //这里可以存放一个查询结果List。
- public void getId(){
- return..
- ...
- //省略
- }
- package zzcv.dao.domain;
- public class Key
- {
- private int id;
- private int lockId;
- private String keyName;
- private Object lock; //这里可以存放key匹配的lock。
- ...
- //省略
- }
package zzcv.dao.domain; public class Lock { private int id; private String lockName; private Object keys; //这里可以存放一个查询结果List。 public void getId(){ return.. ... //省略 } package zzcv.dao.domain; public class Key { private int id; private int lockId; private String keyName; private Object lock; //这里可以存放key匹配的lock。 ... //省略 }表关联通过配置文件的resultMap实现,不需要关联的查询仍可用resultClass
- <sqlMap namespace="test">
- <typeAlias alias="Key" type="zzcv.dao.domain.Key"/>
- <typeAlias alias="Lock" type="zzcv.dao.domain.Lock"/>
- <resultMap id="KeyResult" class="Key">
- <result property="id" column="id"/>
- <result property="keyName" column="keyName"/>
- <result property="lock" column="lockId" select="getLockById"/>
- </resultMap>
- <!-- 通过key表中保存的lock的id实现的一对一关联,ibatis会使用getLockById(lockId)的结果填充lock属性 -->
- <resultMap id="LockResult" class="Lock">
- <result property="id" column="id"/>
- <result property="lockName" column="lockName"/>
- <result property="keys" column="id" select="getKeysByLockId"/>
- </resultMap>
- <!-- 通过lock的id实现的一对多关联,ibatis会使用getKeysByLockId(id)得到的List填充keys属性 -->
- <!-- 多对多可以通过嵌套实现,这里就不列出了 -->
- <select id="selectAllkeys" resultMap="KeyResult">
- <![CDATA[
- select id,lockId,keyName from key
- ]]>
- </select>
- <select id="getLockById" parameterClass="int" resultClass="Lock">
- <![CDATA[
- select id,lockName from lock where id = #value#
- ]]>
- </select>
- <select id="selectAllLocks" resultMap="LockResult">
- <![CDATA[
- select id,lockName from lock
- ]]>
- </select>
- <select id="getKeyByLockId" parameterClass="int" resultClass="key">
- <![CDATA[
- select id,lockId,keyName from lock where lockId = #value#
- ]]>
- </select>
- </sqlMap>
<sqlMap namespace="test"> <typeAlias alias="Key" type="zzcv.dao.domain.Key"/> <typeAlias alias="Lock" type="zzcv.dao.domain.Lock"/> <resultMap id="KeyResult" class="Key"> <result property="id" column="id"/> <result property="keyName" column="keyName"/> <result property="lock" column="lockId" select="getLockById"/> </resultMap> <!-- 通过key表中保存的lock的id实现的一对一关联,ibatis会使用getLockById(lockId)的结果填充lock属性 --> <resultMap id="LockResult" class="Lock"> <result property="id" column="id"/> <result property="lockName" column="lockName"/> <result property="keys" column="id" select="getKeysByLockId"/> </resultMap> <!-- 通过lock的id实现的一对多关联,ibatis会使用getKeysByLockId(id)得到的List填充keys属性 --> <!-- 多对多可以通过嵌套实现,这里就不列出了 --> <select id="selectAllkeys" resultMap="KeyResult"> <![CDATA[ select id,lockId,keyName from key ]]> </select> <select id="getLockById" parameterClass="int" resultClass="Lock"> <![CDATA[ select id,lockName from lock where id = #value# ]]> </select> <select id="selectAllLocks" resultMap="LockResult"> <![CDATA[ select id,lockName from lock ]]> </select> <select id="getKeyByLockId" parameterClass="int" resultClass="key"> <![CDATA[ select id,lockId,keyName from lock where lockId = #value# ]]> </select> </sqlMap>
现在可以代码中使用了
...
..
- try{
- Reader reader = Resources.getResourceAsReader("mxd/dao/data/SqlMapConfig.xml");
- sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
- reader.close(); }
- catch(IOException e){
- throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);}
- List locks=sqlMapper.queryForList("selectAllLocks");
- //取一个Lock对象。
- Lock lock=(Lock)locks.get(0);
- //从Lock对象取List<Key>。
- List keys=lock.getKeys();
- //示例结束,取到结果了,剩余的一个关联是取对象Lock,其余操作差不多,就不写出了。
- ...
- .
发表评论
-
fork/join框架
2017-03-09 11:03 517http://blog.csdn.net/ye1992/art ... -
protobuffer
2017-03-09 10:54 718http://blog.csdn.net/antgan/art ... -
整理上传代码容易忽略的注意事项
2013-08-31 11:28 1187每个公司都有自己的代码代码上传流程:如果打包发布的话,是不存 ... -
mysql版本升级引发的问题
2013-05-16 15:25 1672问题描述: 1. ibatis 中 mysql语 ... -
网站的记住密码功能设计
2013-02-27 19:09 1320http://greenyouyou.blog.163 ... -
大型网站架构演变之路
2013-02-27 19:08 1160http://www.cnblogs.com/ivanjack ... -
使用Filter统计Java(J2EE)的web程序http请求响应时间
2013-02-27 19:07 1403http://www.cnblogs.com/ivan ... -
java bean与xml相互转换
2013-02-06 10:27 2060最近在做的项目,在各个平台之间需要大量传输数据,且结构比较 ... -
java 反射
2013-01-14 18:21 841http://www.cnblogs.com/rollenh ... -
字符串替换
2012-12-17 11:17 1169高效的字符串模式替换实现效果如下 String str ... -
httpURLConnection获取网络数据:XML格式返回与Json格式返回
2012-12-15 16:57 149381.服务器端代码样例: public class ... -
利用Freemarker实现表到功能界面的一键生成
2012-11-22 18:03 1039利用Freemarker实现表到功能界面的一键生成 h ... -
ibatis in ##的问题
2012-11-02 13:25 889http://www.hake.cc/a/biancheng/ ... -
ibatis缓存强制刷新与命中率
2012-10-19 19:06 1403缓存强制刷新: // spring注入 private Sq ... -
eclipse 的一些设置
2012-08-16 22:06 17691. 控制台信息太多,程序跑完后只能保留最后的一部分之前的 ... -
jdk1.5 System.arraycopy与jdk1.6 中Arrays.copyOf()&Arrays.copyOfRange()
2012-08-16 21:56 3301在JDK1.5的类System类中有方法 ... -
Eclipse报Java heap space错误的解决方案
2012-08-16 16:43 12079当运行大数量的数据时: (1) 如果是java 应用程 ... -
求两个字符串的最大公共字符串
2012-08-10 20:41 1073http://blog.csdn.net/wangcj625/ ... -
ffmpeg 截取视频 播放中的图片
2012-06-19 09:14 1324http://www.cnblogs.com/live365w ... -
memcached 项目中的使用
2012-06-13 09:29 1078http://ljh2008.iteye.com/blog/6 ...
相关推荐
ibatis配置多表关联(一对一、一对多、多对多
本文将深入探讨如何在iBATIS中实现一对多和多对多的关系映射,并提供相关的源码分析和工具使用技巧。 **一对多关系映射** 在数据库设计中,一对多关系是指一个父记录可以与多个子记录关联,例如,一个用户可以有多...
总结来说,这个话题覆盖了Mybatis/iBatis中的多表映射,通过XML配置文件处理一对一和一对多关系,以及如何在ExtJS前端通过Model和Grid获取并展示这些数据。了解这些知识对于开发涉及多表交互的应用至关重要,能够...
本篇将聚焦于iBatis的一对多关联映射实战,帮助开发者更好地理解和运用这一特性。 在关系型数据库中,一对多关联是非常常见的一种数据关系,例如一个用户可以拥有多个订单,一个部门可以包含多个员工等。在iBatis中...
在本文档中,我们将详细介绍iBatis在处理多对多关系时的配置和实现。 多对多关系 多对多关系是一种常见的关系数据库设计模式,用于描述两个实体之间的多对多关系。在本例中,我们将使用学生(Student)和教师...
一对多映射是数据库关系模型中的常见概念,指的是一个父表(如部门表)可以对应多个子表(如员工表),每个部门可以有多个员工。在`iBatis` 中,我们可以利用映射文件来配置这种关系,以便在查询时自动处理关联数据...
在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...
这样,当我们调用`SqlSession`的`selectList`方法执行这个查询时,Ibatis会自动将返回的多条记录按照一对多的关系映射成`User`对象,每个`User`对象都有一个包含所有关联订单的`orderList`。 此外,还可以通过使用`...
为了演示Ibatis的多表查询功能,本文档采用了一个简单的例子:一个图书 (`book`) 表和一个用户 (`user`) 表,其中图书表与用户表之间存在一对多的关系。这意味着每本书可以有多个作者。 **图书表 (`book`) 结构:** ...
在SQL查询中,可以使用嵌套选择(`<select>`标签)或者联合主键(`<join>`标签)来关联一对一的表。 2. **一对多关系**:在一个实体类中,可能存在与多个其他实体类的关系,如一个用户有多个订单。同样,使用`...
在处理两个有关系的表时,Ibatis提供了多种策略,如一对一、一对多、多对一、多对多等映射关系。 1. **一对一映射**:当两个表之间存在一对一关系时,例如用户表和用户详细信息表,一个用户对应一条详细信息。在...
配置文件中的`<settings>`标签包含了多个关键参数,它们控制着ibatis的行为特性: - `cacheModelsEnabled`: 控制是否启用缓存模型。设置为`true`表示启用缓存。 - `enhancementEnabled`: 控制是否对POJO进行增强,...
- `<resultMap>`:定义复杂对象的映射,可以处理一对一、一对多、多对一等关联关系。 在实际开发中,Ibatis允许通过动态SQL来构建灵活的查询,比如`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>`、`...
在数据库设计中,多表查询通常涉及到表之间的关联,例如一对一、一对多、多对多关系。在iBatis中,我们可以使用`<select>`标签来定义多表查询的SQL语句。 ### 3. 使用`<include>`标签 为了保持SQL语句的整洁和可...
在Java代码中,通过MyBatis的SqlSession对象加载或保存相关的对象,Ibatis会自动处理一对多的关联填充和删除规则。 接着,批处理操作是提高性能的关键。在Ibatis中,可以通过设置SqlSession的flushCache和useCache...
在iBATIS中,处理这种一对多关系的关键在于配置映射文件,确保数据能够正确关联并检索出来。 1. **iBATIS主子表查询配置**: 在iBATIS的映射文件(XML配置文件)中,我们需要定义两个Mapper:一个是主表的Mapper,...
它可以处理复杂的数据类型映射,包括一对一、一对多、多对一等关联关系。 7. **动态SQL**: Ibatis的一大特色,允许在XML中直接写SQL,可以进行条件判断、循环等复杂的逻辑操作,使得SQL更加灵活和可维护。 8. **...
3. `ibatis配置多表关联(一对一、一对多、多对多).htm` - 这个文件涵盖了多种关联映射,包括一对一、一对多和多对多,可能是全面的关联配置教程。 4. `ibatis多对多映射.htm` - 又一份多对多映射的详细说明。 5. `...
例如,如果存在一个用户表和订单表,它们之间可能有一对多的关系,即一个用户可以有多个订单。在iBatis中,可以通过JOIN操作实现多表查询,将相关数据一次性加载到内存中。Spring的JdbcTemplate或MyBatis的...