在操作数据库的时候,我发现很多时候返回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调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以...
在Java开发中,iBatis是一个非常流行的...在阅读提供的博客链接(可能已失效)时,你可以了解到更多关于如何实现和使用`TypeHandlerCallback`的具体示例和最佳实践。同时,研究源码也能帮助你理解其内部的工作机制。
5. **查询与下载**:同样,当查询大对象时,可以返回`ResultSet`并将其转换为`InputStream`,然后写入到响应流中供用户下载。需要注意的是,为了效率和内存管理,查询后应及时关闭结果集和输入流。 6. **性能优化**...
在Ibatis中,我们使用JDBC驱动来建立数据库连接,执行SQL语句并处理结果。这个特定版本的驱动适用于MySQL 5.1系列,包含了以下功能: 1. 数据库连接:提供DriverManager类的getConnection()方法,用于创建与MySQL...
2. 执行映射的SQL语句,iBATIS会创建PreparedStatement实例,利用对象参数执行SQL,并从ResultSet构建返回的对象。 3. 更新操作时返回受影响的行数,查询操作时返回单个对象或对象集合。 **Data Access Objects ...
6. 结果映射:将数据库返回的结果自动映射到Java对象,无需手动处理ResultSet。 7. 提交或回滚事务:SqlSession提供了提交和回滚事务的方法,确保数据的一致性。 三、Ibatis的优势 1. 解耦:Ibatis将SQL语句与...
在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用...通过上述步骤,我们可以成功地使用ibatis调用Oracle存储过程,并处理返回的多个结果集。这不仅简化了数据库操作,还提高了代码的可读性和可维护性。
这个"struts+spring+ibatis的Demo"压缩包文件提供了这三个框架集成使用的示例代码,旨在帮助开发者理解和学习如何将它们有效地结合在一起。 **Struts 2框架** Struts 2是一个基于MVC设计模式的Web应用框架,它继承...
常用的分页技术包括使用`LIMIT`和`OFFSET`关键字来限制返回的结果集。 例如,要获取前10条记录,可以使用以下SQL命令: ```sql SELECT * FROM users LIMIT 10; ``` #### 二、JDBC详解 JDBC(Java Database ...
iBATIS 创建 PreparedStatement,填充参数,执行 SQL,并从 ResultSet 中构建返回对象。 3. 返回结果。如果是更新操作,返回受影响的行数;如果是查询,返回单个对象、对象集合或基本类型。 在 iBATIS 的基础知识点...
2. 执行映射的SQL语句,iBATIS创建PreparedStatement,填充参数,执行SQL,并从ResultSet中构建返回对象。 3. 返回结果,如果是更新操作,返回受影响的行数;如果是查询,返回单个对象或对象集合。 基础知识点部分...
2. Hibernate通常能自动生成SQL,但在涉及数据库字段修改时,iBATIS的维护工作可能更少。 3. iBATIS的SQL存储在独立文件中,增强了可维护性。 iBATIS的工作流程分为三个步骤: 1. 接收对象参数,用于设置更新语句的...
在传统的iBatis框架中,分页通常采用逻辑分页的方式,即通过游标(ResultSet)来逐条处理数据,从而实现分页效果。这种方式虽然跨数据库兼容性好,但性能上不如数据库原生的物理分页高效。物理分页是直接在SQL语句中...
为了使用iBATIS,你需要在项目中引入以下核心的jar包: - `ibatis-common.jar`:包含iBATIS公用的工具类。 - `ibatis-sqlmap.jar`:iBATIS SQL Maps框架的核心库。 - `ibatis-dao.jar`:iBATIS的DAO(Data Access ...
在与传统的JDBC比较时,iBATIS 显示出了明显的优点。首先,它能够减少大约61%的代码量,使得开发更为高效。其次,iBATIS 提供了一个更简洁的架构,增强了性能,因为它允许SQL代码与程序代码完全分离,从而提高了代码...
动态SQL是IBATIS的一个强大特性,允许在运行时动态生成SQL语句。这通常通过特殊的标签如`if`、`choose`、`foreach`等来实现。 #### 12. 输出SQL 为了调试和监控目的,IBATIS支持输出执行的SQL语句。这可以通过配置...
2. 执行映射的SQL语句,iBATIS会创建PreparedStatement实例,使用参数对象填充SQL,然后执行SQL并从ResultSet中构建返回的对象。 3. 更新操作返回受影响的行数,查询操作则返回一个对象或对象集合,同样可以是...