- 浏览: 72323 次
- 性别:
- 来自: 北京
最新评论
-
a2397772:
...
关于java.lang.NoClassDefFoundError -
pudong:
路过。。。。
Activemq收发消息的目的地不一致的问题。 -
highriver:
我不清楚后者会不会连sql中的变量一并打印出来,jdbclog ...
单元测试中使用jdcblogger观察打印的sql -
▄︻┳═一:
log4j.logger.java.sql=DEBUG
也能 ...
单元测试中使用jdcblogger观察打印的sql -
legend:
liquidthinker 写道加密cookie?不太明白意图 ...
关于使用加密cookie取代session
权限设计中,现在有三个表,分别是role,role_operation,operation.现在要通过roleid得到该role的所有operation的集合。现在分别有role对象,里面有一个Set<Operation>的属性用来代表角色的权限集合。
现在的问题是role_operation表中有一个appType的列,同时operation的表中也有一个appType的列。我想通过查询结果与Bean的映射,将role_operation中的appType的值映射给相应的operation中的appType。
现在sql大概是这样:
<select id="selectRoleByRoleId" resultMap="RoleResult">
select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE,
o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r,
ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and
r.ROLEID = ro.ROLEID and r.ROLEID= #value#
</select>
将来的sqlMap文件中不知道怎么写,下面是试验过的写法会报错,不过里面的红色字体表明我想达到的效果:
<resultMap class="com.tongcard.operation.web.model.Role"
groupBy="roleId" id="abatorgenerated_RoleResult">
<!--
WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
This element was generated on Sun Apr 22 15:16:17 CST 2007.
-->
<result column="ROLEID" jdbcType="DECIMAL" property="roleId" />
<result column="ROLENAME" jdbcType="VARCHAR"
property="roleName" />
<result column="APPTYPE" jdbcType="DECIMAL" property="appType" />
<result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" />
</resultMap>
<resultMap class="com.tongcard.operation.web.model.Role"
groupBy="roleId" id="RoleResult">
<result column="ROLEID" jdbcType="DECIMAL" property="roleId" />
<result column="ROLENAME" jdbcType="VARCHAR"
property="roleName" />
<result column="APPTYPE" jdbcType="DECIMAL" property="appType" />
<result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" />
<result resultMap="DEVELOPER_ADMIN_ROLES.operationResult"
property="opers" />
</resultMap>
<resultMap class="com.tongcard.operation.web.model.Operation"
id="operationResult">
<result column="OPCODE" jdbcType="VARCHAR" property="opCode" />
<result column="OPDETAIL" jdbcType="VARCHAR"
property="opDetail" />
<result column="PARENTCODE" jdbcType="VARCHAR"
property="parentCode" />
<result column="RO.APPTYPE" jdbcType="DECIMAL" property="appType" />
</resultMap>
不知道讲明白没有,谢谢大家。
现在的问题是role_operation表中有一个appType的列,同时operation的表中也有一个appType的列。我想通过查询结果与Bean的映射,将role_operation中的appType的值映射给相应的operation中的appType。
现在sql大概是这样:
<select id="selectRoleByRoleId" resultMap="RoleResult">
select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE,
o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r,
ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and
r.ROLEID = ro.ROLEID and r.ROLEID= #value#
</select>
将来的sqlMap文件中不知道怎么写,下面是试验过的写法会报错,不过里面的红色字体表明我想达到的效果:
<resultMap class="com.tongcard.operation.web.model.Role"
groupBy="roleId" id="abatorgenerated_RoleResult">
<!--
WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
This element was generated on Sun Apr 22 15:16:17 CST 2007.
-->
<result column="ROLEID" jdbcType="DECIMAL" property="roleId" />
<result column="ROLENAME" jdbcType="VARCHAR"
property="roleName" />
<result column="APPTYPE" jdbcType="DECIMAL" property="appType" />
<result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" />
</resultMap>
<resultMap class="com.tongcard.operation.web.model.Role"
groupBy="roleId" id="RoleResult">
<result column="ROLEID" jdbcType="DECIMAL" property="roleId" />
<result column="ROLENAME" jdbcType="VARCHAR"
property="roleName" />
<result column="APPTYPE" jdbcType="DECIMAL" property="appType" />
<result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" />
<result resultMap="DEVELOPER_ADMIN_ROLES.operationResult"
property="opers" />
</resultMap>
<resultMap class="com.tongcard.operation.web.model.Operation"
id="operationResult">
<result column="OPCODE" jdbcType="VARCHAR" property="opCode" />
<result column="OPDETAIL" jdbcType="VARCHAR"
property="opDetail" />
<result column="PARENTCODE" jdbcType="VARCHAR"
property="parentCode" />
<result column="RO.APPTYPE" jdbcType="DECIMAL" property="appType" />
</resultMap>
不知道讲明白没有,谢谢大家。
评论
2 楼
highriver
2007-08-13
自已给自己解答吧。
只需要将sql变成:
<select id="selectRoleByRoleId" resultMap="RoleResult">
select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE,
o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r,
ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and
r.ROLEID = ro.ROLEID and r.ROLEID= #value#
</select>
然后将配置文件变成:
<select id="selectRoleByRoleId" resultMap="RoleResult">
select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE,
o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r,
ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and
r.ROLEID = ro.ROLEID and r.ROLEID= #value#
</select>
将来的sqlMap文件中不知道怎么写,下面是试验过的写法会报错,不过里面的红色字体表明我想达到的效果:
<resultMap class="com.tongcard.operation.web.model.Role"
groupBy="roleId" id="abatorgenerated_RoleResult">
<!--
WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
This element was generated on Sun Apr 22 15:16:17 CST 2007.
-->
<result column="ROLEID" jdbcType="DECIMAL" property="roleId" />
<result column="ROLENAME" jdbcType="VARCHAR"
property="roleName" />
<result column="APPTYPE" jdbcType="DECIMAL" property="appType" />
<result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" />
</resultMap>
<resultMap class="com.tongcard.operation.web.model.Role"
groupBy="roleId" id="RoleResult">
<result column="ROLEID" jdbcType="DECIMAL" property="roleId" />
<result column="ROLENAME" jdbcType="VARCHAR"
property="roleName" />
<result column="APPTYPE" jdbcType="DECIMAL" property="appType" />
<result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" />
<result resultMap="DEVELOPER_ADMIN_ROLES.operationResult"
property="opers" />
</resultMap>
<resultMap class="com.tongcard.operation.web.model.Operation"
id="operationResult">
<result column="OPCODE" jdbcType="VARCHAR" property="opCode" />
<result column="OPDETAIL" jdbcType="VARCHAR"
property="opDetail" />
<result column="PARENTCODE" jdbcType="VARCHAR"
property="parentCode" />
<result column="ROAPPTYPE" jdbcType="DECIMAL" property="appType" />
</resultMap>
就可以啦。
只需要将sql变成:
<select id="selectRoleByRoleId" resultMap="RoleResult">
select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE,
o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r,
ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and
r.ROLEID = ro.ROLEID and r.ROLEID= #value#
</select>
然后将配置文件变成:
<select id="selectRoleByRoleId" resultMap="RoleResult">
select r.ROLEID, r.ROLENAME, r.APPTYPE, r.ORGCODE,o.OPCODE,
o.OPDETAIL, o.PARENTCODE, ro.APPTYPE from ADMIN_ROLES r,
ADMIN_OPS o,ADMIN_ROLE_OP ro where o.OPCODE = ro.OPCODE and
r.ROLEID = ro.ROLEID and r.ROLEID= #value#
</select>
将来的sqlMap文件中不知道怎么写,下面是试验过的写法会报错,不过里面的红色字体表明我想达到的效果:
<resultMap class="com.tongcard.operation.web.model.Role"
groupBy="roleId" id="abatorgenerated_RoleResult">
<!--
WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
This element was generated on Sun Apr 22 15:16:17 CST 2007.
-->
<result column="ROLEID" jdbcType="DECIMAL" property="roleId" />
<result column="ROLENAME" jdbcType="VARCHAR"
property="roleName" />
<result column="APPTYPE" jdbcType="DECIMAL" property="appType" />
<result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" />
</resultMap>
<resultMap class="com.tongcard.operation.web.model.Role"
groupBy="roleId" id="RoleResult">
<result column="ROLEID" jdbcType="DECIMAL" property="roleId" />
<result column="ROLENAME" jdbcType="VARCHAR"
property="roleName" />
<result column="APPTYPE" jdbcType="DECIMAL" property="appType" />
<result column="ORGCODE" jdbcType="VARCHAR" property="orgCode" />
<result resultMap="DEVELOPER_ADMIN_ROLES.operationResult"
property="opers" />
</resultMap>
<resultMap class="com.tongcard.operation.web.model.Operation"
id="operationResult">
<result column="OPCODE" jdbcType="VARCHAR" property="opCode" />
<result column="OPDETAIL" jdbcType="VARCHAR"
property="opDetail" />
<result column="PARENTCODE" jdbcType="VARCHAR"
property="parentCode" />
<result column="ROAPPTYPE" jdbcType="DECIMAL" property="appType" />
</resultMap>
就可以啦。
1 楼
highriver
2007-08-13
sql与sqlMap不知道哪里写错了。我对ibatis的底层映射原理不是太明白,怎么通过ResultSetMetaData就能将相应的列遇到到相应的bean属性上。难道是sql中a.b,将来就会自动的找到a这个对象,并赋给对象中的b属性吗?题外话,希望高手一并解答一下。
发表评论
-
关于java.lang.NoClassDefFoundError
2009-09-25 12:11 1687一看到java.lang.NoClassDefFoundErr ... -
Terracotta+Spring
2009-08-07 11:42 1267Terracotta3.1.0版本对Spring的支持发生变化 ... -
Eclipse3.4.2死循环编译
2009-07-23 14:37 1448工程报错,查看problem提示error: Descript ... -
Terracotta中集合的操作
2009-07-22 15:08 976下面的数据结构的操作在默认情况下并不是auto-locked. ... -
银弹和我们的职业
2009-07-17 11:50 879http://blog.csdn.net/SystemBug/ ... -
关于在Terracotta中使用ReentrantReadWriteLock
2009-07-17 11:19 1046ReentrantReadWriteLock 不需要额外的配置 ... -
Summary of Terracotta Locks
2009-07-15 16:37 1090Summary of Terracotta Locks clu ... -
Jamon监控业务层方法性能
2009-07-02 16:15 18591.jamon好象没有提供maven的dependency. ... -
Waiting for changelog lock
2009-06-25 10:34 2447导致这样的问题可能是liquibase的表DATABASECH ... -
单元测试中使用jdcblogger观察打印的sql
2009-06-24 11:35 1747单元测试中使用jdcblogger观察打印的sql 1.lo ... -
eclipse3.4.2快速恢复
2009-06-12 10:06 997遇到eclipse崩溃后,总是担心重新安装eclipse还需要 ... -
ubuntu启动器的权限
2009-06-11 16:16 1842eclipse3.4.2在使用sudo命令打开一次后,可能再用 ... -
Compass的更新索引操作
2009-06-10 10:51 1297Compass的索引更新操作的源码是先删除,后创建。所以当在外 ... -
Activemq收发消息的目的地不一致的问题。
2009-06-10 10:45 2624发送消息,在发送者的应用中定义了queue: <amq ... -
Myeclipse切换到Eclipse3.4.2
2009-05-15 17:59 1304解决从Myeclipse到Eclipse3.4.2 jee出现 ... -
关于jbpm预研时的问题
2008-03-10 00:36 42451.有没有人使用struts2或webwork与jbpm结合使 ... -
关于execAndWait的问题
2008-01-25 14:14 3753使用了execAndWait,wait.jsp页面中定义如下: ... -
关于如何在fitler中使用转发到.do的问题
2007-11-21 23:32 3379现在需要使用filter实现一个网站登陆时”记住用户名“的功能 ... -
关于struts2中@validations对于方法的校验
2007-05-11 14:42 7232在struts2中,我使用下面的方法请求。 通过Action! ... -
关于使用annotation实现struts2中的"dispatchAction"
2007-05-09 00:05 6786如题,谢谢。 通过配置文件好象很好实现,主要定义多个actio ...
相关推荐
总结,主子表查询在iBATIS中通过配置XML映射文件,结合Java代码和SQL脚本实现。log4j作为日志管理工具,可以帮助开发者更好地查看和分析查询结果。理解这些概念并熟练应用,对于进行复杂数据库操作的Java开发工作至...
iBatis 支持在查询语句中进行多表查询,并能够将结果映射到相应的 Java 对象上。多表查询通常涉及到 JOIN 操作,例如内连接(INNER JOIN)、左连接(LEFT JOIN)等,这些操作可以帮助我们从多个相关联的表中获取所需...
在iBatis中,可以通过嵌套结果映射或联合映射来处理。`<association>`和`<collection>`的组合使用,配合自定义的SQL查询,可以实现多对多的映射。 4. **双向映射**:在一对多或多对一关系中,如果需要在两个方向上...
在XML映射文件中,你可以使用标签或在标签内直接编写JOIN语句,以实现多个表的数据联合查询。记得在Mapper接口中定义对应的方法。 6. **Service层和DAO层**: 在实际项目中,我们通常会创建Service层来封装业务...
### ibatis and和or联合查询知识点 #### 一、ibatis简介 ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀开源数据访问框架。ibatis消除了几乎所有的JDBC对象操作,提供了一个简单的基本API,它通过XML或...
1. **动态SQL**:Ibatis支持在XML映射文件中编写动态SQL,根据条件生成不同的查询语句。 2. **参数映射**:通过`<paramter>`标签将Java对象的属性值映射到SQL语句的占位符。 3. **结果映射**:通过`<resultMap>`标签...
1. **复杂查询**:当需要进行复杂的数据库查询,如分页、联合查询、子查询时,IBatis 提供的 SQL 映射和动态 SQL 功能非常有用。 2. **性能优化**:通过缓存机制,可以减少对数据库的频繁访问,提高系统性能。 3. ...
- 复杂查询:涉及子查询,联合查询,存储过程的调用等。 - 缓存机制:讲解iBATIS的缓存策略,如何启用和配置缓存以提高性能。 - 异常处理:介绍iBATIS抛出的异常类型及其处理方式。 - 批量操作:如何利用iBATIS...
1. **联合查询的使用.jpg**:这可能是一个关于iBatis如何实现多表联合查询的示例。在iBatis中,可以通过和标签来定义复杂的SQL查询,包括JOIN操作,以此来获取多个表的数据。 2. **iBATIS.in.Action.pdf.lnk**:这...
关联映射则用于一对一或一对多的关系,通过nestedResultMap或association标签,可以实现主从表的联合查询和结果转换。 对于存储过程的处理,Ibatis允许直接调用数据库的存储过程,并通过out参数获取返回结果。在XML...
在SQL查询中,可以使用嵌套选择(`<select>`标签)或者联合主键(`<join>`标签)来关联一对一的表。 2. **一对多关系**:在一个实体类中,可能存在与多个其他实体类的关系,如一个用户有多个订单。同样,使用`...
相比之下,iBATIS更适用于那些需要高级SQL查询技巧的应用场景,如处理复杂联表查询、分页查询等。iBATIS给予开发者对SQL语句的完全控制权,这意味着开发者可以优化查询逻辑,以适应数据库设计的特殊需求,特别是在...
**ResultMap**是iBATIS中非常重要的概念,它用于定义如何将数据库查询结果映射到Java对象上。主要特性包括: 1. **基本类型的Result**:例如String、Integer等。 2. **Map类型的Result**:当结果集中包含多列时,...
文件可能还包含了一些实际案例,展示如何在不同场景下使用iBATIS,如单表操作、多表联合查询、存储过程调用等。 9. **问题排查与调试** 学习如何定位和解决iBATIS使用过程中遇到的问题,例如SQL执行错误、数据...
5.1.2 非查询已映射语句 83 5.2 插入数据 84 5.2.1 使用内联参数映射 84 5.2.2 使用外部参数映射 85 5.2.3 自动生成的键 86 5.3 更新和删除数据 88 5.3.1 处理并发更新 88 5.3.2 更新或删除子记录 89 5.4 运行批量...
iBATIS 的设计理念是,虽然它提供了 POJO(Plain Old Java Object)到数据库表的映射,但它并不封装 SQL 的编写过程。这意味着开发者仍然需要编写 SQL 语句,而不是完全依赖框架自动生成 SQL。这种方式的好处在于: ...
尽管如此,Ibatis 也有一些局限性,比如对于复杂事务管理和多表联合查询的支持相对有限,需要开发者有较强的SQL功底。 总的来说,Ibatis 是一款优秀的数据访问工具,尤其适合那些需要高度定制SQL语句的项目。其轻量...
7. 查询:深入讨论如何执行SQL查询,包括简单的单表查询、多表联合查询、分页查询以及使用ResultMaps处理复杂的结果集。 8. 参数映射:介绍如何传递参数给SQL语句,包括基本类型、复杂对象和集合类型的参数映射方法...
例如,复杂的查询、分页或联表操作,使用Ibatis可以更加直观和高效。 四、配置数据库连接池 高效的数据库连接池是优化数据库操作的关键。在IbatisDemo中,推荐使用如Druid这样的高性能连接池。Druid提供监控、SQL...
1. **XML 配置**:Ibatis 使用 XML 文件来配置 SQL 映射,这使得 SQL 查询和业务逻辑分离,方便管理和维护。 2. **动态 SQL**:Ibatis 支持在映射文件中编写动态 SQL,可以根据条件灵活地改变查询逻辑。 3. **结果...