SELECT LOGDATE logdate, <dynamic> <isEqual property="isMember" compareValue="true" close=","> NAME name </isEqual> </dynamic> AGE age FROM t
如题,在select中使用动态查询,isMember是Boolean类型的,结果就是isMember为true的时候还是选不到name这一列.
经过排查得知,生成的sql是正确的,但是resultMap的head是没有NAME name这一列的.
ibatis的sql和resultMap是分开的,先根据sqlMap生成一个resultMap,然后把查询的结果再映射到resultMap中
虽然查询出来了结果,但是没有地方放数据.
具体为什么生成的resultMap没有那一列,带确认...
查出原因了,确认结果:
ibatis会缓存了第一次查过之后使用的resultMap,第二次查询的时候便不会考虑其他字段(即上面的NAME列).
改为<select id="***" parameterClass="***" resultClass="***" remapResults="true">
意思就是每次都会重新生成新的resultMap.
参考链接:http://www.iteye.com/topic/89424
相关推荐
通过在 `<select>` 标签中设置 `remapResults="true"`,可以有效地解决IBatis缓存动态字段带来的问题。这不仅避免了因缓存错误而导致的查询失败,还确保了程序能够灵活地处理动态表名和字段名。同时,需要注意的是,...
iBatis 中使用安全的拼接语句、动态查询、大于、小于、等于 iBatis 是一个流行的持久层框架,提供了许多强大的功能来帮助开发者构建高效、安全的数据库交互应用程序。本文将详细介绍 iBatis 中使用安全的拼接语句、...
在 iBatis 中,动态查询条件是通过 `<dynamic>` 元素来实现的,该元素可以根据参数的值来生成不同的 SQL 语句。 在 iBatis 中,参数可以是基本类型、字符串、集合等,它们可以通过 `#` symbols 来传递给 SQL 语句。...
以上内容详细介绍了 ibatis 中动态查询的基本原理及具体实现方法,包括模糊查询、多条件组合查询以及使用 Map 作为参数的高级用法。这些知识点对于深入理解 ibatis 的动态查询机制非常重要,可以帮助开发者更高效地...
在多表查询中,Ibatis 提供了多种方式来处理复杂的关联查询,包括一对一、一对多、多对一和多对多等关系。在这个例子中,我们将探讨如何在 Ibatis 中实现一对多的关系查询。 首先,我们创建了两个表:`book` 和 `...
iBATIS推荐的写法是在SQL字符串中动态添加`%`,如下所示: ```xml <select id="showOneStudentByName" parameterClass="String" resultMap="studentORM"> SELECT * FROM t_stu WHERE s_name LIKE '%' || #name# ||...
根据提供的文档信息,我们可以深入探讨Ibatis框架中的一个具体应用场景:如何通过动态SQL查询特定条件下的ID列表。本文将从以下几个方面进行详细解析: ### 一、Ibatis简介 Ibatis是一个基于Java的持久层框架,它...
iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的...
动态SQL是iBatis的一大特色,通过`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>` 等标签,可以在XML中编写条件判断,构建灵活的SQL语句。 8. **缓存**: iBatis提供了本地缓存和二级缓存机制...
在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...
在描述中提到的"按条件查询",就是通过iBatis动态构建SQL语句来实现的。开发者可以在SQL Map中定义一个模板SQL,然后在Java代码中传入参数,iBatis会自动替换SQL中的占位符,生成实际的查询语句。这种方式既避免了硬...
本文将深入探讨如何在iBATIS中进行主子表查询,以及涉及到的相关技术如一对多关系、日志管理库log4j等。 首先,主子表查询是数据库设计中常见的场景,通常涉及到一个“父”表(主表)和一个或多个“子”表(从表)...
在 ibatis 中,可以使用 `<select>` 元素来定义 SQL 查询,并通过 `resultClass` 属性指定结果集的类型。为了使查询结果能够适应变化的列名和列数,我们需要设置 `remapResults` 属性为 `true`。 ```xml <!-- ...
在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`<iterate>`标签的用法及其示例。 `<iterate>`标签的主要...
同时,对于复杂的业务场景,iBATIS支持动态SQL,使得在映射文件中可以编写条件语句,根据对象状态动态生成执行的SQL片段。 最后,iBATIS 2.0的核心API主要包括SqlMapConfig.xml配置文件、SqlMapClient接口及其实现...
在ibatis3.0中,为了实现动态SQL的功能,引入了`<foreach>`标签来处理集合数据。下面详细介绍`<foreach>`标签的属性及其用法: 1. **`item`**: 表示当前循环中的元素变量名。 2. **`index`**: 表示当前循环的索引...
在这里,你可以看到SQL语句被封装在`<select>`, `<insert>`, `<update>` 和 `<delete>` 标签中,这些标签允许你编写动态SQL,实现参数化查询。例如,`<select id="selectUser" parameterClass="int" resultClass=...
在实际项目中,可以进一步研究如何将Ibatis3的动态SQL与JPA的查询表达式相结合,以满足复杂的查询需求。同时,注意处理好事务管理和性能优化,确保系统稳定高效运行。 总之,掌握Ibatis3与JPA的融合使用,将使你在...
注意,iBatis还支持动态SQL,这意味着你可以在XML配置文件中使用`<if>`、`<choose>`、`<when>`等标签来根据条件动态构建SQL语句,这对于复杂的连接查询非常有用。 总的来说,iBatis提供了强大的SQL定制能力,使得...