mapper层: @Select("select SNO,SNAME,SSEX from student") [email protected](fetchSize = Integer.MIN_VALUE)//mysql情况比较特殊,只能这样设置 C
映射器层:
@ select ("select SnO,sname,ssex from student ")
//@ options(fetch size = integer。min _ value)//MySQL比较特殊,只能这样设置
光标
单元测试:
@ test
@ transactional
public void testmybaticsursor(){
游标
wad12302
04/27 10:15
为什么要用光标?正常分页不好。
晓夜寒光
04/28 08:17
分页一般习惯整合pagehelper去搞,一般用于页面展示比较多。
这个需求是后台进程流式读取一张大表,对每条数据做响应的处理,这样是不是用流式会不会好点,还希望请教下。
Kit_lee
04/27 10:19
难道没有必要添加交易注释吗?映射器似乎不会自动接受事务注释,只有SpringData [email protected]
您编写一个服务层方法来包装您的代码,[email protected],测试类将不会被使用
晓夜寒光
04/28 14:59
回复 @Kit_lee : 这是一个很合理的解释而且值得去证明下,谢谢你。我是论坛新用户,没有积分,若有定补上。
Kit_lee
04/28 10:05
回复 @晓夜寒光 : 这应该是个误解,游标基本上是JDBC ResultSet的一个包装器。为了从游标获取值,应该打开底层的ResultSet。如果在整个循环期间没有事务,那么在执行查询时,spring会在你调用mysqlStudentMapper.queryByCursor前打开连接,方法完成后,连接被关闭,所以游标使用的ResultSet也被关闭了。
晓夜寒光
04/28 08:13
不知道这个理解有没有偏差
晓夜寒光
04/28 08:12
我的理解是游标的遍历属于查询,不需要保证事务特性,[email protected]
麒
04/28 17:24
[email protected]actional,当查询方法返回时,连接将返回到DS。返回连接后,光标必须为空
另外,如果是数据库,即使是为了内存计算,也可以分页读取,比如1000页。看完一页数据,就交给计算模块计算。算了一下,看下一页就相当于一个个处理,而不是一个个处理。这样也可以做成类代消费法。生成器负责将数据库中的数据添加到队列中,消费者可以处理数据并控制内存。
小99
04/28 20:10
Android
问个根本问题,为什么要逻辑分页不用物理分页?是必须这么要求的吗
qfsz168
今天 11:15
添加东西,为了保持数据库连接,否则,取数据一次后,连接会返回。携带网上看到的文章:新技能MyBatis数据表,快速分页!