中秋佳节,多想吟诗一首:明月几时有,把酒问青天,不知天上宫。。。,行啦,不扯淡啦,中秋佳节也不能影响我学习的热情,说一说今天遇到问题
如何在静态方法中调用注入的service
Public class ClassA{
public static ClassA classA;
@Resource
private Service service;
//原理时在工程启动时加载,在静态方法前加载,这样就可以在静态方法中调用注入的方法啦 @PostConstruct public void init() { classA = this;
classA.service=service; }
}
关于jpa的Specification自定义函数
这个时自定义方法的源码,有注释,不多说啦
1 /** 2 * Create an expression for the execution of a database 3 * function. 4 * @param name function name 5 * @param type expected result type 6 * @param args function arguments 7 * @return expression 8 */ 9Expression function(String name, Class type, 10 Expression>... args);
咱说说这个类,也就是
ParameterizedFunctionExpression,是如何实现动态组合排序条件,实现decode
Expression>... args);
//这是function实现实际调用的方法;他调用的就是这个类ParameterizedFunctionExpression的构造方法
@Override
public
return new ParameterizedFunctionExpression
}
//ParameterizedFunctionExpression的构造方法
public ParameterizedFunctionExpression(
CriteriaBuilderImpl criteriaBuilder,
Class
String functionName,
Expression>... argumentExpressions) {
super( criteriaBuilder, javaType, functionName );
this.argumentExpressions = Arrays.asList( argumentExpressions );
this.isStandardJpaFunction = STANDARD_JPA_FUNCTION_NAMES.contains( functionName.toUpperCase(Locale.ROOT) );
}
//实现
Expression
//存储排序条件
List
//排序字段
argumentExpressions.add(cb.literal("grade");
//排序的顺序
argumentExpressions.add(cb.literal(1));
expression = new ParameterizedFunctionExpression
argumentExpressions);