http://jaykuen.iteye.com/blog/852086
Xml代码
<select id="XX" resultClass="java.util.HashMap" parameterClass="java.util.HashMap" >
select yyyymmdd,
<isNotEmpty prepend=" " property="user_type">
<isEqual property="x" compareValue="1">
a
</isEqual>
<isEqual property="x" compareValue="2">
b
</isEqual>
</isNotEmpty>
<select id="XX" resultClass="java.util.HashMap" parameterClass="java.util.HashMap" >
select yyyymmdd,
<isNotEmpty prepend=" " property="user_type">
<isEqual property="x" compareValue="1">
a
</isEqual>
<isEqual property="x" compareValue="2">
b
</isEqual>
</isNotEmpty>
当x=1查询的时候列名是a, 如果第一次查询x=1,那么第二次查询x=2就会报这个错,因为ibatis保留列名为第一次查询时候的列名a,ibatis可以设置一个参数remapResults="true",每次查询都重新更新列名,
Xml代码
<select id="XX" resultClass="java.util.HashMap" parameterClass="java.util.HashMap" remapResults="true"
<select id="XX" resultClass="java.util.HashMap" parameterClass="java.util.HashMap" remapResults="true" 当出现如上的动态改变查询列,或者其他方式动态改变的时候,都需要设置remapResults="true"这个属性,因此不至于出现“列名无效”的错误。
其实,这个错误抛出的地方是resultSet.getString(“xx”);方法,因为iBATIS保留了第一次的列名,所以第二次查询的时候resultSet获得的还是第一次保留下来的列名。
分享到:
相关推荐
在Java开发领域,Ibatis是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在配置文件中,从而简化了数据访问层的实现。`ibatis.util`包是Ibatis框架的一部分,提供了很多实用工具类,帮助开发者更好地进行...
此外,Ibatis支持动态SQL,使得查询条件可以根据业务需求灵活变化。 3. **多参数传递**: 在Ibatis中,如果一个方法需要接收多个参数,可以使用@Param注解为每个参数命名,然后在SQL语句中通过占位符引用它们。...
在Java开发中,Ibatis作为一个轻量级的持久层框架,深受开发者喜爱。它通过XML或注解方式配置和映射SQL,简化了数据库操作。然而,在实际开发中,我们经常遇到枚举类型的需求,例如在数据库字段中存储状态、性别等...
Ibatis提供了诸如`SqlException`、`DataAccessException`等异常,便于捕获和处理数据库操作中的错误。 ## 总结 Ibatis.net 提供了一个简洁而强大的方式来处理数据库操作,通过SQL映射文件和映射器接口,实现了SQL与...
`iBatis`是一个优秀的持久层框架,它使得Java开发者能够方便地将SQL语句与Java代码相结合,实现灵活的数据访问。而`Oracle`作为一款功能强大的关系型数据库管理系统,广泛应用于大型企业级应用。本示例“ibatis + ...
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...
import java.sql.SQLException; public class GenderTypeHandler extends BaseTypeHandler<Gender> { @Override public void setNonNullParameter(PreparedStatement ps, int i, Gender parameter, JdbcType ...
在MyBatis中,枚举类型的自动转换是一个常见的需求,特别是在处理数据库字段与Java枚举类型之间转换时。本文将详细介绍如何在MyBatis中实现枚举的自动转换,以便在查询结果返回时能直接得到对应的枚举实例,无需额外...
在Java开发领域,iBatis作为一个优秀的持久层框架,因其灵活的数据映射和SQL定制能力而深受开发者喜爱。iBatis3 GA(General Availability)版本是其稳定且广泛使用的版本,而Javadoc API则是开发者理解和使用iBatis...
`iBatis`是Java领域中广泛使用的SQL映射框架,它允许开发者将SQL语句直接写在配置文件中,与Java代码解耦,提高了开发效率。当遇到不支持中文的数据库时,`iBatis`的自定义数据类型功能就显得尤为重要。 首先,我们...
MyBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者Mapper接口的方法注解中,大大提升了开发效率和灵活性。 首先,我们来理解一下“级联1对1关联”。在数据库设计中,1对1关联是指两个...
创建一个实现`org.apache.ibatis.type.TypeHandler`接口的类,重写`setParameter`和`getResult`方法,确保在SQL语句执行前能将Java对象转换为CLOB,执行后又能从CLOB还原为原始数据。 2. **配置MyBatis** 在...
MyBatis通用Mapper是MyBatis框架的一个扩展,它极大地简化了常见的CRUD操作,使得开发者无需编写大量的SQL映射代码。在本示例中,我们聚焦于如何使用通用Mapper处理UUID类型的主键,以此来增强数据库操作的灵活性...
在开发Java Web应用程序时,Spring Boot和MyBatis是两个非常流行的技术框架。Spring Boot简化了项目的初始化和配置,而MyBatis则提供了一个灵活的持久层解决方案。本项目示例"1.springboot+mybatis项目demo2.mybatis...
import java.sql.SQLException; public class MyTypeHandle implements TypeHandler<String> { private static final String KEY = "123456"; @Override public void setParameter(PreparedStatement ...
总之,SqlMapClient是iBatis框架中进行数据库操作的关键组件,它提供了一种灵活的方式将Java对象与SQL语句关联,实现了数据访问层的封装。通过合理的配置和使用,开发者可以高效、安全地进行数据库操作。
于设置非空参数,我们将根据枚举的code字段设置参数;T getNullableResult(ResultSet rs, String columnName) 用于从结果集中获取可为空的结果并转换为枚举;T getNullableResult(ResultSet rs, int columnIndex) 和...
类型处理器的作用在于,当SQL查询执行后,数据库返回的结果会被类型处理器转换为Java对象,反之,当执行插入、更新等操作时,Java对象的属性值也会通过类型处理器转化为数据库能识别的格式。 1. **内置类型处理器**...
Spring 出品的 JdbcTemplate 对于不想使用hibernate或者ibatis那样需要大量学习成本而且还想获得对象化的人来说是很好用的。但是 JdbcTemplate还是有很多不足之处或者说是缺点。比如你没法像hibernate那样直接传一个...