mybatis mysql 分页sql语句_使用mybatis分页查询并统计总数「建议收藏」

2022-09-05 10:17:53 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

今天在优化项目的时候,偶尔发现了一种分页查询的方法。其目的是,在分页查询的同时查出数据总记录数并实现模糊查询功能。并且,在以往的分页查询上,如果要使用模糊查询,则模糊查询出来的总记录数可能出现问题。使用改方法可以优化代码。

本项目使用的是springboot,mybatis,druid连接池

以下贴上源码:

mybatis的xml文件

① resultMap=”trainResultMap,count”注意: resultMap里有两个函数,第一个为多表关联的映射map的Id,第二个则是id为count的resultMap查询总记录数方法

② 这里使用了两条sql语句。首页通过默认条件查询数据并分页,并且提供模糊查询功能,且查询总记录数方法是在前一条sql语句基础上执行而成

service实现类

① baseMapper.queryPageByStuId用于调用dao方法

② (List) list.get(0)用于取返回的函数map集合的第一个函数List集合

③ ((List) list.get(1)).get(0)用于取返回函数map集合的第二个函数count数据总数

以下为踩坑记录:

后端报错

Error querying database. Cause: java.sql.SQLException: sql injection violation, multi-statement not allow报错原因为:在一个resultMap中执行了多条sql语句

解决方法:

1、首先在数据库配置中启动数据库执行多条sql语句操作

druid的url地址

在末尾添加 allowMultiQueries=true

2、在MybatisPlusConfig配置类中添加以下代码

MybatisPlusConfig.java

3 在数据源中添加以下代码

DynamicDataSourceFactory.java

支持多语句查询 druidDataSource.setProxyFilters(Arrays.asList(new MybatisPlusConfig().wallFilter()));

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137275.html原文链接:https://javaforall.cn

0 人点赞