MyBatis中ResultHandler的使用

时间:2019-11-05
本文章向大家介绍MyBatis中ResultHandler的使用,主要包括MyBatis中ResultHandler的使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

   有一种场景,到处100万条数据,如果在mybatis把整个数据查询到list中。

  那么,就有一个问题,如果数据量大的话,就会导致大对象,内存溢出(OOM)。

  这个时候我们就可以利用Mybatis中的ResultHandler来处理。

  ResultHandlerj接口只有一个方法handleResult,这个方法的作用是:

    我们可以在这里添加处理每一条(sql查询返回的每一条数据)数据的逻辑。

  

public class MyExport implements ResultHandler {
    
    @Override
    public void handleResult(ResultContext resultContext) {
        Object resultObject = resultContext.getResultObject();
        System.out.println(resultObject.toString());
        // 在这里将每一条数据写入文件    
    }
}
 void selectVideoList(ResultHandler<Video> resultHandler);
 <select id="selectVideoList"  resultType="com.pig.hportal.model.Video">
        select * from video limit 10
    </select>

test方法

@SpringBootTest(classes = HApplication.class)
@RunWith(SpringRunner.class)
public class MainTest {

    @Autowired
    private VideoMapper videoMapper;

    @Test
    public void test() {
        MyExport export = new MyExport();
        videoMapper.selectVideoList(export);
        System.out.println("ok");
    }

}

这里注意:

  我们sql返回值为void,所以我们没有并没有接受这个返回值。所以不会产生大对象。


						

原文地址:https://www.cnblogs.com/windy13/p/11801813.html