若依的许多controller都继承了BaseController类,学习一下里面的几个方法。
1、initBinder()方法
查了一下,好像是用来解决前端出传来的属性与后端绑定的,不常用,知道个大概就行,详情;
(149条消息) springMVC之@InitBinder的用法_wang0907的博客-CSDN博客
@InitBinder注解的使用
这里使用这个@InitBinder注解是为了解决前端传来的时间为字符串,而后端直接用date接受报错的问题,但是感觉还是@JsonFormat、@DateTimeFormat处理比较常见,详情可以查看
@JsonFormat 和 @DateTimeFormat 的区别与使用?
startPage()
这里只是简单的封装了一下pageHelper的startpage()方法,关于setReasonable(reasonable)合理化,就是
启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页; 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据。
若依当中默认开启。
场景:开启后。文章输入搜索100页(但是没那么多页),因此只显示最后一页
(149条消息) pageHelper分页合理化_pagehelper 分页合理化_在启航的博客-CSDN博客
若依还在这里做了防止sql注入的操作,对于排序段进行了防止sql注入,
举个例子加入原来的sql :select..order by name
恶意操作:select..oorder by name ;delete ...
像这样在末尾添加了分号,然后执行一写不好的操作。
因此若依对此处理了一下。进行正则匹配排除了分号;
关于这个正则表达式 [a-zA-Z0-9_\\ \\,\\.]+ 解释如下
除此之外还提供了一个filterKeyword方法来检查参数里面是否存在sql关键字检查,就是定义了一些sql关键字,来和传入的val进行匹配。
value.indexOf(sqlKeyword)> -1) 一样的
StringUtils.indexOf(value, sqlKeyword) > -1
这个方法被用在分页查询,就是简单的封装了一下pageHelper的startpage方法
后面的getDataTable(list)就只是简单的封装了一下分页的返回结果罢了
若依当中分页插件的相关配置
PageHelper分页插件 https://blog.csdn.net/weixin_57701024/article/details/120233643