若依的许多controller都继承了BaseController类,学习一下里面的几个方法。

1、initBinder()方法

查了一下,好像是用来解决前端出传来的属性与后端绑定的,不常用,知道个大概就行,详情;

(149条消息) springMVC之@InitBinder的用法_wang0907的博客-CSDN博客
@InitBinder注解的使用

这里使用这个@InitBinder注解是为了解决前端传来的时间为字符串,而后端直接用date接受报错的问题,但是感觉还是@JsonFormat、@DateTimeFormat处理比较常见,详情可以查看

@JsonFormat 和 @DateTimeFormat 的区别与使用?
  1. 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

Logo

快速构建 Web 应用程序

更多推荐