继续吧,JdbcPlus完全依赖JdbcTemplate,站在前辈的肩膀上,不重复发明轮子;动态查询语句使用占位符(?)的方式,不是SQL拼接,不用担心SQL攻击。
11、通过SqlFilter和自定义SQL,动态查询记录数
int getTotal(String sql, SqlFilter sqlFilter);
![988493baec3081919bdbb55e25202de5.png](https://i-blog.csdnimg.cn/blog_migrate/0fe6073c6c9bf18e9b3f4be6ffcdc6ed.jpeg)
![fa05cf69218022282a15315894f182c0.png](https://i-blog.csdnimg.cn/blog_migrate/0f43df34816636699701189553bf50c8.jpeg)
![751103bb65fcef0318a72f42187b12c3.png](https://i-blog.csdnimg.cn/blog_migrate/edf5b6c07292a3c77ace41209d0ea592.jpeg)
![6746ded8ef7246b89b0d11e111354ce4.png](https://i-blog.csdnimg.cn/blog_migrate/03ea4e8f9e171c364febd3beaaa6cc2a.jpeg)
本例可以看到where条件有多种方式动态追加,默认所有条件按照逻辑并且(and),通过改变SqlFilter的属性,可以设置追加部分不要关键词where,追加部分使用或者(or),filters组里使用或者(or)关系。
12、通过分页器,查询数据
Page select(String sql, Pager pager, Class entityClass);
先介绍下Pager请求分页器
![ee14ab6df3083fb30344effc8c7353dc.png](https://i-blog.csdnimg.cn/blog_migrate/2f592798dd22ff0e7f31aba8572b3769.jpeg)
Pager请求结构比较简单
- total:总记录数,为什么请求还要用总数呢,主要为了性能考虑,如果设置大于0,表示已经有总数了,后台不用再查询,特别在客户点击下一页,业务上总数变化不大,不需要每次都进行总数查询;客户端可以存储总数,或后端通过缓层总数,同样条件只是分页有变化,直接从缓层取总数
- currPage:当前第几页
- pageSize:每页几条记录
- sqlFilter:条件过滤器,前面介绍了
响应结果Page类
![9df767b55547304d60010357e20e6f2f.png](https://i-blog.csdnimg.cn/blog_migrate/8833b9c9e4e90f7c185bec0dbba48e09.jpeg)
- total:返回总记录数
- currPage:当前页
- pageSize:每页几条记录
- rows:对象结果集
分页查询动态生成的SQL
![2b437468b3dc9c9209ef40588d1ac82b.png](https://i-blog.csdnimg.cn/blog_migrate/063ef60b5041a3e57e97104be9acda05.jpeg)
String sql = "select * from t_employee";Page page= jdbcPlus.select(String sql, pager, EmployeePO.class);
此分页接口理解后,后面的接口概念上都是一个意思,通过接口的名字就能理解
13、通过SqlFilter,查询列表数据
List select(String sql, SqlFilter sqlFilter, Class entityClass);
此接口不需要分页,只需要根据SqlFilter条件查询列表
String sql = "select * from t_employee";SqlFilter sqlFilter =new SqlFilter();sqlFilter.getFilters().add(new Filter("emp_name