这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战
昨天我们说JpaRepository Bean的生成,前天说了代理的生成,今天我们把最后一块查询也扔锅里头绘了。
所以今天我们来说说查询和查询的解析。
QueryExecutorMethodInterceptor
根据参数获取查询策略,如果有策略就往下走生成查询,没有策略抛异常。
然后是生成查询,为空就是空查询。
查询是一个Map,根据我们的这个方法来映射对应的查询
查询的执行
往下翻,能看到查询的执行,一个invoke方法:
一共三步啊,获取一个方法,然后根据返回类型获取一个ExecutionAdapter,再根据ExecutionAdapter的apply方法,执行doInvoke方法
获取方法再获取参数,然后根据这个方法获取到的查询,执行查询。
查询解析
查询执行后的解析,我们可以看到这里有常见的增删改查,还有我们查询的count都是有的。
这里的Pattern.compile,就是可以指定字符串和规则进行截取的,比如要操作的表,操作参数,每个字段,是什么处理,都可以截取出来。
我们跟着上面,跟着箭头走,不迷路:
然后到了解析查询方法
然后到了创建查询,比较复杂。
此外,还有排序解析,orderby
还有IgnoreCase