能否使用SpEL在@Query注解中注入常量?
用SpEL在Spring Data JPA @Query中引用静态常量
当然可以用Spring Expression Language(SpEL)实现静态常量的注入,替代字符串拼接的方式,写法更简洁规范。
实现示例
直接在@Query的SQL语句中通过T()表达式引用静态常量,需要指定常量类的全限定类名:
// 替换com.yourpackage为你实际的Constant类所在包路径 @Query(value = "UPDATE kdo set is_revise=0, update_by=#{T(com.yourpackage.Constant).CREATOR}, update_time= CURRENT_TIMESTAMP where kdo.id=:kdoId", nativeQuery = true) int flagRevised(String kdoId);
关键说明
T()是SpEL中引用Java类型的语法,通过它可以直接访问类的静态属性或方法- 这种方式无需手动做字符串拼接,Spring会自动解析SpEL表达式并注入常量值到SQL中
- 要求
Constant类是public的,且CREATOR是public static修饰的常量
内容的提问来源于stack exchange,提问作者Adi Prasetyo
相关产品推荐
相关产品推荐

