博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot jpa 实现拦截器
阅读量:4292 次
发布时间:2019-05-27

本文共 2820 字,大约阅读时间需要 9 分钟。

我们项目重构加上了很多数据权限的东西,项目中使用了mybatis 和 jpa。经手的人多了就是这样。 mybatis 我们使用的是拦截器给sql动态拼接,现在jpa也需要这样做。

以下是jpa 拦截器的配置。

第一步: 实现 hibernate接口。重写方法

public class JpaInterceptor implements  StatementInspector {    @Override    public String inspect(String sql) {        System.out.println("进入拦截器" + sql);        sql+= " and 1=1";        return sql;    }}

第二步: 在yml中配置

spring:  jpa:    properties:      hibernate:        session_factory:          statement_inspector: com.bdyh.system.config.jpa.JpaInterceptor

结果

2019-06-19 17:19:08,615 - HHH000397: Using ASTQueryTranslatorFactory进入拦截器select permission0_.id as id1_8_, permission0_.create_by as create_b2_8_, permission0_.create_department_id as create_d3_8_, permission0_.create_department_ids as create_d4_8_, permission0_.create_time as create_t5_8_, permission0_.del_flag as del_flag6_8_, permission0_.tenant_id as tenant_i7_8_, permission0_.update_by as update_b8_8_, permission0_.update_department_id as update_d9_8_, permission0_.update_department_ids as update_10_8_, permission0_.update_time as update_11_8_, permission0_.button_type as button_12_8_, permission0_.component as compone13_8_, permission0_.description as descrip14_8_, permission0_.icon as icon15_8_, permission0_.level as level16_8_, permission0_.name as name17_8_, permission0_.parent_id as parent_18_8_, permission0_.path as path19_8_, permission0_.sort_order as sort_or20_8_, permission0_.status as status21_8_, permission0_.title as title22_8_, permission0_.type as type23_8_, permission0_.url as url24_8_ from t_permission permission0_ where permission0_.type=? and permission0_.status=? and permission0_.tenant_id=? order by permission0_.sort_order ascHibernate: select permission0_.id as id1_8_, permission0_.create_by as create_b2_8_, permission0_.create_department_id as create_d3_8_, permission0_.create_department_ids as create_d4_8_, permission0_.create_time as create_t5_8_, permission0_.del_flag as del_flag6_8_, permission0_.tenant_id as tenant_i7_8_, permission0_.update_by as update_b8_8_, permission0_.update_department_id as update_d9_8_, permission0_.update_department_ids as update_10_8_, permission0_.update_time as update_11_8_, permission0_.button_type as button_12_8_, permission0_.component as compone13_8_, permission0_.description as descrip14_8_, permission0_.icon as icon15_8_, permission0_.level as level16_8_, permission0_.name as name17_8_, permission0_.parent_id as parent_18_8_, permission0_.path as path19_8_, permission0_.sort_order as sort_or20_8_, permission0_.status as status21_8_, permission0_.title as title22_8_, permission0_.type as type23_8_, permission0_.url as url24_8_ from t_permission permission0_ where permission0_.type=? and permission0_.status=? and permission0_.tenant_id=? order by permission0_.sort_order asc and 1=1

转载自https://www.jianshu.com/p/e89b48a4cb7a

你可能感兴趣的文章
MySQL 修改表结构相关
查看>>
三目运算法中隐藏的问题
查看>>
JVM GC问题排查(多数是内存泄漏导致)
查看>>
JVM理论
查看>>
JVM内存模型简述
查看>>
从一个Java对象看JVM内存模型及对象生命周期
查看>>
为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?
查看>>
JDK常用监控指令和监控工具分析及OutOfMemory异常分析
查看>>
使用线程池注意事项
查看>>
java线程池理论知识拾遗
查看>>
原码反码补码,位运算,或与非
查看>>
IntelliJ IDEA普通项目添加pom.xml,转变为Maven项目
查看>>
ThreadPoolExecutor部分方法解读
查看>>
Java8 新特性 lambda表达式
查看>>
ArrayList与LinkedList的性能差别
查看>>
Tomcat类加载机制
查看>>
for(;;) and while(true)
查看>>
CountDownLatch:闭锁
查看>>
关于系统与系统间调用时的逻辑健壮性
查看>>
notepad++的使用
查看>>