相信大部分人都会遇到:在数据库的数据量很大时,分页需要几秒钟才会全部完成;包括分页list的获取和count的获取。

那我们完全可以将这两步放到一次sql去执行获取,减少一半的查询时间。

这里get到sql_calc_found_rows和SELECT FOUND_ROWS()这两个知识点。

看代码:

select SQL_CALC_FOUND_ROWS

col_name1 as colName1,

col_name2 as colName2

from table_name limit 0,10;

select FOUND_ROWS() as count;

在SELECT语句中加上修饰SQL_CALC_FOUND_ROWS 之后,SELECT FOUND_ROWS() 会返回满足条件记录的总数。

这样,你执行完 select SQL_CALC_FOUND_ROWS 之后,再取一下记录总数就行了。

现在,你会获取到如下数据:

看到没有,两个结果:第一个是分页list,第二个是总数count。接下来怎么办?

接下来我们就将相关代码放到JAVA中,可是我们会发现:在数据库中能够成功执行语句,但是放到代码中却会报错。

原来,mybatis在我们使用链接连接数据库时,需要我们手动在连接上加上代码:

&allowMultiQueries=true   //允许执行多条sql

这样,mybatis就可以成功通过多条sql语句get到多个数据集了。

那么现在问题来了:

我们在xml中如何去接收sql查询到的多数据集呢?

废话不多说,直接上代码:

1.xml代码:

SELECT sql_calc_found_rows 这里是字段 FROM

tbl_student_infomation AS tsi

LEFT JOIN tbl_college AS tco ON tsi.college_id=tco.id

LEFT JOIN tbl_profession AS tp ON tsi.profession_id=tp.id

LEFT JOIN tbl_class AS tcl ON tsi.class_id=tcl.id

WHERE 1=1

ORDER BY tcs.score DESC,tsi.is_track DESC,tsi.sno DESC limit #{offset},#{limit};

SELECT found_rows() as count;

2.Mapper代码//接收用list>

List> getStudentManagePage(这里是传递的条件参数);

3.service代码//接收用list>

List> getStudentManagePage(这里是传递的条件参数);

4.serviceImpl代码@Override

public List> getStudentManagePage(参数) {

return tblStudentInfomationMapper.getStudentManagePage(参数);

}

5.controller代码//这里是接收数据

List> list = tblStudentInfomationService.getStudentManagePage(参数);

List studentManageVoList = new ArrayList();

//接收分页数据

studentManageVoList = (List)list.get(0);

//接收count数据

count = ((List) list.get(1)).get(0);

好,按照以上配置,你就会发现SQL执行效率就大大提高了。

☆重点提示

强调下必须修改数据库连接

1、修改数据库连接参数加上allowMultiQueries=true,如:hikariConfig.security.jdbcUrl=jdbc:mysql://xx.xx.xx:3306/xxxxx?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true

2、直接写多条语句,用“;”隔开即可

delete from sec_user_role where userId=#{id};

delete from sec_user where id=#{id};

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐