`
Abby_success
  • 浏览: 16971 次
  • 性别: Icon_minigender_2
  • 来自: 重庆
社区版块
存档分类
最新评论

在使用ibatis时返回ResultSet

阅读更多

       在操作数据库的时候,我发现很多时候返回ResultSet比返回List或对象方便的多,可是在直接利用ibatis操作数据层的时候,ibatis封装的类里却无法返回ResultSet,通常只能返回一个List或一个对象,但是返回ResultSet也不是无法实现的!曾记得JDBC是最基本也是最通用的连接数据库的方式!!O(∩_∩)O~简单又强大,何乐而不为呢??

所以要实现在ibatis中得到ResultSet数据集:

在数据层:

首先,得到DataSource:DataSource  dataSource = this.getDataSource();

其次,得到Connection conn = dataSource.getConnection();

再次,创建statement  st = conn.cerateStatement();

最后,得到ResultSet rs = st.executeQuery("select * from t_user");

完全就是在ibatis中利用JDBC的到ResultSet!!

在查资料的时候,网上很多朋友说是通过修改ibatis的源代码可以实现,可是对于我们赶时间的话,还是不是最可取的!我用JDBC这种方式实现了返回ResultSet数据集,暂时解决了前几天遇到的问题,也还没有测试出这种用法还存在什么问题,忘偶看此文的朋友赐教!!

 

    在此时写小结的时候,还想起一点点JDBC的其他东西,使用JDBC怎样加快数据层的执行效率呢?无疑,此时容易想到Qracle的批处理,还有就是在statement和PrepareStatement中选择一个和批处理配合执行,当然此时PrepareStatement是最佳的选择,所以在使用JDBC 的时候,需要提高执行效率:Oracle的批处理执行+PrepareStatement是不错的选择!!!

 

对CLOB字段的操作:(实例)

//插入一条带大字段的记录

public void saveCLOB(String  queryId,String baseSql) {
  Connection conn = null;
  PreparedStatement ps =null;
  try {
   String mainSql = "insert into User(id,basesql) values(?,?)";
   conn = this.getDataSource().getConnection();
   ps = conn.prepareStatement(mainSql);
   ps.setString(1,queryId);
   ps.setClob(2,oracle.sql.CLOB.getEmptyCLOB());
   ps.executeUpdate();
   this.updateClobSql(conn,queryId,baseSql); 
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }finally{
   try {
    ps.close();
    conn.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
 
/*
  * 此方法用于更新大字段的内容
  */
 public void updateClobSql(Connection conn,String queryId, String baseSql) {
  

    String getClobSql = "select BASESQL from User where id ='"+queryId+"' "+"FOR UPDATE";
  try {
   conn.setAutoCommit(false);
   Statement st = conn.createStatement();
   ResultSet rs_clob = st.executeQuery(getClobSql);
   Clob baseSQL = null;
   while(rs_clob.next()){
    baseSQL = (oracle.sql.CLOB)rs_clob.getClob(1);
   }
   Writer out = baseSQL.setCharacterStream(0);
         out.write(baseSql);
         out.flush();
         out.close();
         st.close();
         conn.commit();
         conn.setAutoCommit(true);
  }catch (Exception e) {
      e.printStackTrace();
  }
 }

在读取CLOB字段的时候以string的形式返回即可!!!

 

分享到:
评论

相关推荐

    ibatis调存储过程返回游标

    本文将深入探讨如何使用iBatis调用存储过程并返回游标,这是一个在处理复杂数据库操作时常见的需求。 ### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以...

    使用iBatis的类型处理器TypeHandlerCallback

    在Java开发中,iBatis是一个非常流行的...在阅读提供的博客链接(可能已失效)时,你可以了解到更多关于如何实现和使用`TypeHandlerCallback`的具体示例和最佳实践。同时,研究源码也能帮助你理解其内部的工作机制。

    使用ibatis操作大对象,mySQl数据库

    5. **查询与下载**:同样,当查询大对象时,可以返回`ResultSet`并将其转换为`InputStream`,然后写入到响应流中供用户下载。需要注意的是,为了效率和内存管理,查询后应及时关闭结果集和输入流。 6. **性能优化**...

    ibatis工程依赖的jar包

    在Ibatis中,我们使用JDBC驱动来建立数据库连接,执行SQL语句并处理结果。这个特定版本的驱动适用于MySQL 5.1系列,包含了以下功能: 1. 数据库连接:提供DriverManager类的getConnection()方法,用于创建与MySQL...

    ibatis 学习笔记

    2. 执行映射的SQL语句,iBATIS会创建PreparedStatement实例,利用对象参数执行SQL,并从ResultSet构建返回的对象。 3. 更新操作时返回受影响的行数,查询操作时返回单个对象或对象集合。 **Data Access Objects ...

    ibatis实现原理解析

    6. 结果映射:将数据库返回的结果自动映射到Java对象,无需手动处理ResultSet。 7. 提交或回滚事务:SqlSession提供了提交和回滚事务的方法,确保数据的一致性。 三、Ibatis的优势 1. 解耦:Ibatis将SQL语句与...

    ibatis调用oracle存储过程

    在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用...通过上述步骤,我们可以成功地使用ibatis调用Oracle存储过程,并处理返回的多个结果集。这不仅简化了数据库操作,还提高了代码的可读性和可维护性。

    struts+spring+ibatis的Demo

    这个"struts+spring+ibatis的Demo"压缩包文件提供了这三个框架集成使用的示例代码,旨在帮助开发者理解和学习如何将它们有效地结合在一起。 **Struts 2框架** Struts 2是一个基于MVC设计模式的Web应用框架,它继承...

    mysql,jdbc详解,与ibatis对比。批量查询,分页处理。

    常用的分页技术包括使用`LIMIT`和`OFFSET`关键字来限制返回的结果集。 例如,要获取前10条记录,可以使用以下SQL命令: ```sql SELECT * FROM users LIMIT 10; ``` #### 二、JDBC详解 JDBC(Java Database ...

    ibatis教程 入门教程

    iBATIS 创建 PreparedStatement,填充参数,执行 SQL,并从 ResultSet 中构建返回对象。 3. 返回结果。如果是更新操作,返回受影响的行数;如果是查询,返回单个对象、对象集合或基本类型。 在 iBATIS 的基础知识点...

    ibatis教程.ppt

    2. 执行映射的SQL语句,iBATIS创建PreparedStatement,填充参数,执行SQL,并从ResultSet中构建返回对象。 3. 返回结果,如果是更新操作,返回受影响的行数;如果是查询,返回单个对象或对象集合。 基础知识点部分...

    ibatis ppt

    2. Hibernate通常能自动生成SQL,但在涉及数据库字段修改时,iBATIS的维护工作可能更少。 3. iBATIS的SQL存储在独立文件中,增强了可维护性。 iBATIS的工作流程分为三个步骤: 1. 接收对象参数,用于设置更新语句的...

    对IBatis分页的改进,使ibatis支持hibernate式的物理分页.doc

    在传统的iBatis框架中,分页通常采用逻辑分页的方式,即通过游标(ResultSet)来逐条处理数据,从而实现分页效果。这种方式虽然跨数据库兼容性好,但性能上不如数据库原生的物理分页高效。物理分页是直接在SQL语句中...

    ibatis基础PPT

    为了使用iBATIS,你需要在项目中引入以下核心的jar包: - `ibatis-common.jar`:包含iBATIS公用的工具类。 - `ibatis-sqlmap.jar`:iBATIS SQL Maps框架的核心库。 - `ibatis-dao.jar`:iBATIS的DAO(Data Access ...

    ibatis教程 ppt

    在与传统的JDBC比较时,iBATIS 显示出了明显的优点。首先,它能够减少大约61%的代码量,使得开发更为高效。其次,iBATIS 提供了一个更简洁的架构,增强了性能,因为它允许SQL代码与程序代码完全分离,从而提高了代码...

    ibatis2讲义

    动态SQL是IBATIS的一个强大特性,允许在运行时动态生成SQL语句。这通常通过特殊的标签如`if`、`choose`、`foreach`等来实现。 #### 12. 输出SQL 为了调试和监控目的,IBATIS支持输出执行的SQL语句。这可以通过配置...

    iBATIS教程之入门浅析借鉴.pdf

    2. 执行映射的SQL语句,iBATIS会创建PreparedStatement实例,使用参数对象填充SQL,然后执行SQL并从ResultSet中构建返回的对象。 3. 更新操作返回受影响的行数,查询操作则返回一个对象或对象集合,同样可以是...

Global site tag (gtag.js) - Google Analytics