若依学习——BaseController类(PageHelper)
若依的许多controller都继承了BaseController类,学习一下里面的几个方法。
若依的许多controller都继承了BaseController类,学习一下里面的几个方法。
1、initBinder()方法
![](https://i-blog.csdnimg.cn/blog_migrate/83915a619e57d37451d3c33afa7f5525.png)
查了一下,好像是用来解决前端出传来的属性与后端绑定的,不常用,知道个大概就行,详情;
(149条消息) springMVC之@InitBinder的用法_wang0907的博客-CSDN博客
@InitBinder注解的使用
这里使用这个@InitBinder注解是为了解决前端传来的时间为字符串,而后端直接用date接受报错的问题,但是感觉还是@JsonFormat、@DateTimeFormat处理比较常见,详情可以查看
@JsonFormat 和 @DateTimeFormat 的区别与使用?
startPage()
![](https://i-blog.csdnimg.cn/blog_migrate/89a6e4486385d2b5d951a3917f616602.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1ab6cf5bbbc457d9c586672a89f5933c.png)
这里只是简单的封装了一下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 ...
像这样在末尾添加了分号,然后执行一写不好的操作。
因此若依对此处理了一下。进行正则匹配排除了分号;
![](https://i-blog.csdnimg.cn/blog_migrate/9b276cae1f7a78f2cedd4c74cf9bc966.png)
关于这个正则表达式 [a-zA-Z0-9_\\ \\,\\.]+ 解释如下
![](https://i-blog.csdnimg.cn/blog_migrate/648cf07122f33e5f3d2bf41ee9e76a8f.png)
除此之外还提供了一个filterKeyword方法来检查参数里面是否存在sql关键字检查,就是定义了一些sql关键字,来和传入的val进行匹配。
value.indexOf(sqlKeyword)> -1) 一样的
StringUtils.indexOf(value, sqlKeyword) > -1
![](https://i-blog.csdnimg.cn/blog_migrate/40e961e69b8d1bf731be515005bbe9fb.png)
这个方法被用在分页查询,就是简单的封装了一下pageHelper的startpage方法
![](https://i-blog.csdnimg.cn/blog_migrate/300282853bfcfc217d5b427620fba927.png)
后面的getDataTable(list)就只是简单的封装了一下分页的返回结果罢了
![](https://i-blog.csdnimg.cn/blog_migrate/5a055e9aa8238df7441f7a3d99b8bdb6.png)
若依当中分页插件的相关配置
PageHelper分页插件 https://blog.csdn.net/weixin_57701024/article/details/120233643
![](https://i-blog.csdnimg.cn/blog_migrate/8a1480f94f9e73389fa0d16781992dce.png)
更多推荐
所有评论(0)