带条件的怎么处理(最好不用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
|