0 0

ibatis 如何出入动态传入指定表和指定列查询对应数据?10

ibatis 的配置如下:

<select id="selectDataOfTable" resultClass="java.util.Hashtable" parameterClass="java.util.Map">
    <![CDATA[
    SELECT $column$ FROM $tableName$
    ]]>
    </select>
当传出:tableName: CC_RPT_DF01
column   :TO_CHAR(MONTH_CODE,'yyyy-MM-dd hh:mi:ss') MONTH_CODE,decode(BUSINESS_PLACE_CODE,NULL,'',BUSINESS_PLACE_CODE)BUSINESS_PLACE_CODE,decode(PRICE_ID,NULL,'',PRICE_ID)PRICE_ID,decode(TRADE_CODE,NULL,'',TRADE_CODE)TRADE_CODE,decode(INTERVAL,NULL,'',INTERVAL)INTERVAL,decode(TOTAL_POWER,NULL,0,TOTAL_POWER)TOTAL_POWER,decode(TOTAL_POWER_YG,NULL,0,TOTAL_POWER_YG)TOTAL_POWER_YG,decode(TOTAL_POWER_WG,NULL,0,TOTAL_POWER_WG)TOTAL_POWER_WG,decode(FAVOR_POWER,NULL,0,FAVOR_POWER)FAVOR_POWER,decode(ADD_POWER,NULL,0,ADD_POWER)ADD_POWER,decode(TOTAL_FEE,NULL,0,TOTAL_FEE)TOTAL_FEE,decode(CONTENT_FEE,NULL,0,CONTENT_FEE)CONTENT_FEE,decode(CAPA,NULL,0,CAPA)CAPA,decode(CAPA_FEE,NULL,0,CAPA_FEE)CAPA_FEE,decode(NEED,NULL,0,NEED)NEED,decode(NEED_FEE,NULL,0,NEED_FEE)NEED_FEE,decode(BASE_FEE,NULL,0,BASE_FEE)BASE_FEE,decode(COS_ADD_FEE,NULL,0,COS_ADD_FEE)COS_ADD_FEE,decode(COS_REDUCE_FEE,NULL,0,COS_REDUCE_FEE)COS_REDUCE_FEE,decode(FAVOR_FEE,NULL,0,FAVOR_FEE)FAVOR_FEE,decode(ADD_FEE,NULL,0,ADD_FEE)ADD_FEE,decode(SANXIA_FEE,NULL,0,SANXIA_FEE)SANXIA_FEE,decode(CHENGSHI_FEE,NULL,0,CHENGSHI_FEE)CHENGSHI_FEE,decode(PROVINCE_FEE,NULL,0,PROVINCE_FEE)PROVINCE_FEE,decode(STATE_FEE,NULL,0,STATE_FEE)STATE_FEE,decode(NONGWANG_FEE,NULL,0,NONGWANG_FEE)NONGWANG_FEE,decode(ENERGY_FEE,NULL,0,ENERGY_FEE)ENERGY_FEE,decode(OTHER_FEE,NULL,0,OTHER_FEE)OTHER_FEE,decode(USER_COUNT,NULL,0,USER_COUNT)USER_COUNT

能查出CC_RPT_DF01 表对应 列  的数据 。
当第二次传入  tableName:CC_RPT_DF11
column   :TO_CHAR(MONTH_CODE,'yyyy-MM-dd hh:mi:ss') MONTH_CODE,decode(BUSINESS_PLACE_CODE,NULL,'',BUSINESS_PLACE_CODE)BUSINESS_PLACE_CODE,decode(VOLTAGE_LEVEL,NULL,'',VOLTAGE_LEVEL)VOLTAGE_LEVEL,decode(SALE_ID,NULL,'',SALE_ID)SALE_ID,decode(USER_NUM,NULL,0,USER_NUM)USER_NUM,decode(SUM_CAPA,NULL,0,SUM_CAPA)SUM_CAPA

Check the selectDataOfTable-AutoResultMap. 
--- Check the result mapping for the 'PRICE_ID' property. 
--- Cause: java.sql.SQLException: 列名无效; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:  
--- The error occurred in com/szp/eai/dataobject/Common.xml. 
--- The error occurred while applying a result map. 
第二次传入的列名和数据库表中一致。
我感觉好像 SELECT $column$ FROM $tableName$ 这中语句,ibatis记住了第一次出入的列,第二次传入的新列没有用。
要实现这中功能,ibatis该如何做?


2008年12月19日 23:43

1个答案 按时间排序 按投票排序

0 0

采纳的答案

<select id="selectDataOfTable" resultClass="java.util.Hashtable" parameterClass="java.util.Map" remapResults="true"> 


试试

2008年12月21日 17:21

相关推荐

    ibatis 用HashMap解决resultClass映射

    通过上述介绍,我们可以看到使用 `HashMap` 解决 ibatis 中的动态列名和列数的问题是一种非常实用的方法。它不仅避免了为每种情况创建实体类的繁琐工作,还提高了代码的灵活性和可维护性。希望本文能够帮助你在实际...

    ibatis多表查询过程

    在Spring框架中,可以使用`@Autowired`注解将SqlSessionTemplate或SqlSessionFactory注入到服务层,方便进行iBatis的事务管理和查询操作。 ### 11. 示例 以下是一个多表查询的XML映射文件示例: ```xml SELECT *...

    Ibatis复杂查询语句.doc

    总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态SQL、子查询、多表联接、条件判断、数据类型映射和迭代处理等功能。在实际开发中,这种灵活性使得Ibatis能够适应各种复杂的业务场景,...

    ibatis教程_删除指定id的单个对象.rar

    本教程主要聚焦于如何使用Ibatis来删除指定ID的单个对象,这涉及到SQL动态执行、Mapper接口和XML配置文件的使用等核心概念。 首先,我们需要理解Ibatis的基本工作原理。Ibatis通过将Java对象映射到SQL语句,实现了...

    Mybatis/ibatiS多表映射 一对一 一对多 extjs前台取值 详细讲解

    总结来说,这个话题覆盖了Mybatis/iBatis中的多表映射,通过XML配置文件处理一对一和一对多关系,以及如何在ExtJS前端通过Model和Grid获取并展示这些数据。了解这些知识对于开发涉及多表交互的应用至关重要,能够...

    Ibatis

    1.3 参数映射:通过 `&lt;parameterMap&gt;` 和 `&lt;parameter&gt;` 元素,可以指定 SQL 语句中的参数类型和值,支持简单的类型和复杂的对象映射。 1.4 结果集映射:通过 `&lt;resultMap&gt;` 元素,定义了 SQL 查询结果如何映射到 ...

    ibatis的CRUD+存储过程+动态查询

    总结,Ibatis通过SQL映射文件提供了强大的数据操作能力,包括基本的CRUD操作,调用存储过程以利用数据库的高级功能,以及使用动态SQL进行灵活的查询。掌握这些知识点,能让你在Java后端开发中更加游刃有余。学习和...

    根据表生成ibatis的sqlMap文件

    总的来说,"根据表生成iBatis的SQLMap文件"是一项实用的开发任务,结合JDBC的元数据功能,可以有效地自动化生成和管理数据库操作的映射文件,简化了开发流程。在实际项目中,这样的工具类是非常有价值的,值得开发者...

    iBatis执行非查询语句(CRUD,函数和过程)

    iBatis是一个轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码直接结合,提供了灵活的数据访问...通过阅读“iBatis执行非查询语句(CRUD,函数和过程)”这篇博客,可以深入理解如何利用iBatis进行数据操作。

    ibatis基本操作数据库

    iBatis并不鼓励直接复制SQL字符串到数据库管理系统(DBMS)进行执行,因为这样会丧失iBatis的一些核心优势,如参数绑定、动态SQL和结果映射等。在iBatis中,我们通常通过XML配置文件或者注解来定义SQL语句,并使用...

    ibatis常见案例

    Ibatis为插入、更新、删除和查询提供了简洁的API。例如,插入操作可以通过`&lt;insert&gt;`标签完成,其中的`parameterType`指定传入参数的类型,`useGeneratedKeys`和`keyProperty`用于获取自增主键的值。 ```xml ...

    iBATIS2.3及其说明文档

    1. SQL Maps:这是iBATIS的核心,通过XML文件定义SQL语句和结果集映射,使业务逻辑和数据访问层分离。在XML文件中,你可以定义insert、update、delete、select等SQL操作,并将返回的结果映射到Java对象上。 2. ...

    iBatis入门Helloworld

    例如,`UserVo selectUserById(int id)`方法会调用`SqlSession`的`selectOne()`方法,并传入对应的SQL ID和参数。 7. **Service层**:在业务逻辑中,调用DAO实现类的方法,处理业务流程。例如,创建一个UserService...

    ibatis 多表

    在处理复杂的数据查询,特别是涉及多个数据表之间的关联查询时,iBatis 提供了强大的支持。 在 iBatis 中进行多表查询,主要涉及以下几个关键知识点: 1. **配置文件**:首先,你需要在 `mybatis-config.xml` 文件...

    ibatis--dao的应用

    例如,你可以用`&lt;select&gt;`标签定义一个查询,其中的id属性对应Java方法名,而parameterType和resultType分别指定了输入参数类型和返回结果类型。 在DAO层,Ibatis通过`SqlSession`接口与数据库进行交互。创建`...

    Ibatis应用实例.docx

    在示例中,`getAccount`方法用于根据username获取Account对象,SQL语句是查询Account表中username等于指定值的所有列。 通过这种方式,iBatis将数据库操作与业务逻辑解耦,使得开发人员能够更专注于业务处理,而...

    ibatis出错调试心得

    - **数据类型匹配**:在定义SQL语句时,需要确保SQL语句中的数据类型与数据库表中的列数据类型相匹配,例如: ```sql insert into USER (USER_ID, USER_NAME, USER_ALIAS, USER_LEVEL) values (#userId#, #...

    ibatis入门实例(全代码)

    Ibatis 是一个优秀的轻量级 Java ORM(对象关系映射)框架,它允许开发者将 SQL 查询与 Java 代码分离,使得数据访问层更加灵活和易于维护。在这个"ibatis入门实例(全代码)"中,我们将探讨如何通过 Ibatis 实现对...

    Ibatis 2.3.4 数据库无关分页

    2. **动态SQL**:使用Ibatis的动态SQL特性,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签,根据传入的参数动态生成分页SQL。比如,对于MySQL,可以使用`LIMIT`和`OFFSET`,而对于Oracle,可能需要使用`...

Global site tag (gtag.js) - Google Analytics