大家好,又见面了,我是你们的朋友全栈君。
今天在优化项目的时候,偶尔发现了一种分页查询的方法。其目的是,在分页查询的同时查出数据总记录数并实现模糊查询功能。并且,在以往的分页查询上,如果要使用模糊查询,则模糊查询出来的总记录数可能出现问题。使用改方法可以优化代码。
本项目使用的是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