mybatis中mysql的fetchsize问题

jn0115 2014-09-29 06:15:47
有个表很大,用selectList肯定内存溢出了。现在重载了ResultHandler实现每条数据取出来自定义处理掉

static class MyHandler implements ResultHandler{
@Override
public void handleResult(ResultContext ctx) {
// TODO Auto-generated method stub
Post post =(Post) ctx.getResultObject();
System.out.println(post.getTitle());
}
}

public void printAllPost() {
sTemplate.select("printAll", new MyHandler());
}

<select id="printAll" resultMap="postResultMap" fetchSize="10">
select * from post;
</select>

这段代码问题是mysql本身不支持fetchsize,所以还是内存溢出了。 本人在jdbc下面设置

st.setFetchSize(Integer.MIN_VALUE);

是可以的。

以下解决方法虽然可行,但实在不怎么样:

<select id="printAll" resultMap="postResultMap" fetchSize="-2147483648">
select * from post;
</select>


所以该问题,如何解决? 采用分页好像又太麻烦
...全文
2549 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
attilax 2014-10-02
  • 打赏
  • 举报
回复 1
要是可以添加内存走最好...大的内存就不怕内存溢出拉....
01山 2014-09-30
  • 打赏
  • 举报
回复 1
我也推荐分页,实际运用也应该会加一些查询的限制条件进去
  • 打赏
  • 举报
回复 1
分页吧,虽然麻烦点,但总比这个方法要好
sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从10.5 开始 mysql 支持5.6、5.7、8.0 版本 postgresql 支持9.5 以及以上版本 sqlserver 支持2008到2019版本,建议使用2012或以上版本 sqlite sybase_iq 支持15.4以上版本,建议使用16版本 elasticsearch 只支持查询,版本支持5.7+版本,建议使用7.3以上版本 clickhouse mongodb (只支持查询) sqltoy-orm特性: 1、根本上杜绝了sql注入问题,sql支持写注释、sql文件动态更新检测,开发时sql变更会自动重载。 2、最直观的sql编写模式,当查询条件稍微复杂一点的时候就会体现价值,后期变更维护的时候尤为凸显。 3、极为强大的缓存翻译查询:巧妙的结合缓存减少查询语句表关联,极大简化sql和提升性能。 4、最强大的分页查询:很多人第一次了解到何为快速分页、分页优化这种极为巧妙的处理,还有在count语句上的极度优化。 5、跨数据库函数方言替换,如:isnull/ifnull/nvl、substr/substring 等不同数据库。 sqltoy-orm特点: 1、最优雅直观的sql编写模式 2、天然防止sql注入,执行过程 3、最强大的分页查询 4、最巧妙的缓存应用,将多表关联查询尽量变成单表 5、跨数据库 6、提供行列转换(数据旋转),避免写复杂的sql或存储过程,用算法来化解对sql的高要求,同时实现数据库无关(不管是mysql还是sqlserver) 7、提供分组汇总求平均算法(用算法代替sql避免跨数据库语法不一致) 8、分库分表 9、五种非数据库相关主键生成策略 10、elastic原生查询支持 11、elasticsearch-sql 插件模式sql模式支持     sqltoy-orm框架系统 更新日志: v4.18.22 1、在findEntityEntityQuery可以设置fetchSize 2、在sqltoyContext可以全局设置fetchSize,例如 spring.sqltoy.fetchSize=200 3、convertType 支持空集合返回空集合 4、针对一些特殊原因导致表名是数据库关键词的处理支持

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧