条件分页排序处理

带条件的怎么处理(最好不用map接收)

	1.接收方式:
		1.实体类,针对具体的条件封装实体类
		2.requestParam(required=false) Map来接收,这样就通用点
				map的作用就是实体类无法固定,就是前段的参数我无法确定就无法提供实体类,就例如
				条件查询的类无非就是 条件字段,排序字段,升序或降序,这样得写很多条件类,我完全可以用map来接收,
				只要我map.get(“”“”)get里面的key和前端传来的一样即可
		3.请求体接收,条件实体类或者请求体也是Map
		
	2.对于排序字段的处理:
		1.确定的排序字段,可以写在sql中,例如:String 具体的排序字段 只需要判断排序字段为null,即可,不为null,那么升降序descending肯定也有值,在判断它的值
		判断是按这个字段升序还是降序
		
		2.对于不确定的排序字段,例如实体类中只有String sortColumn,如果用order by的话,sortColumn跟数据库的字段还存在一个 驼峰命名问题,导致不能直接排序
		这时,我们先查询出分页数据,然后在用Stream流来对list排序,然后返回
		
		3.最优解,条件实体类 (条件字段,排序字段不确定的前端传字段名,Boolean descending = false;判断是升还是降)
		  然后将实体类中的条件字段驼峰式处理后,这样就可以写sql了
		  
		4.如果用Map<String,Object>接收也可以,那么就保证前端的字段名要和实体类的方式一致,requestParam(required=false)其实都是一样的
		例如map.get("条件字段")做一个强转,判断是否为null即可,其实都一样,把握思想,有确定的实体类,提供实体类,无确定的实体类,用map也可以达到效果
		  
	3.注意排序时,也要考虑排序字段出现重复数据了顺序不一致问题解决办法,排序字段加id

计算总页数的办法

	 long totalPage = (totalCount+pageSize-1)/pageSize

猜你喜欢

转载自blog.csdn.net/Chen4852010/article/details/120694346