
net.cassite.daf4j.jpa.JPQLConditionParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of daf4j-ds-jpa Show documentation
Show all versions of daf4j-ds-jpa Show documentation
A library provides implementation of DAF4J DataAccess using JPA
The newest version!
package net.cassite.daf4j.jpa;
import net.cassite.daf4j.Parameter;
import net.cassite.daf4j.ParameterAggregate;
import net.cassite.daf4j.ParameterComparable;
import net.cassite.daf4j.PreResult;
import net.cassite.daf4j.ds.*;
/**
* 将所有条件解释为JPQL语句
*/
public class JPQLConditionParser implements ConditionParser {
private ObjectResolver objectResolver;
@Override
public String gt(JPQLContext jpqlContext, ParameterComparable> parameterComparable, Object o) throws Exception {
return objectResolver.resolve(jpqlContext, parameterComparable) + " > " + objectResolver.resolve(jpqlContext, o);
}
@Override
public String lt(JPQLContext jpqlContext, ParameterComparable> parameterComparable, Object o) throws Exception {
return objectResolver.resolve(jpqlContext, parameterComparable) + " < " + objectResolver.resolve(jpqlContext, o);
}
@Override
public String eq(JPQLContext jpqlContext, Parameter parameter, Object o) throws Exception {
return objectResolver.resolve(jpqlContext, parameter) + " = " + objectResolver.resolve(jpqlContext, o);
}
@Override
public String ge(JPQLContext jpqlContext, ParameterComparable> parameterComparable, Object o) throws Exception {
return objectResolver.resolve(jpqlContext, parameterComparable) + " >= " + objectResolver.resolve(jpqlContext, o);
}
@Override
public String le(JPQLContext jpqlContext, ParameterComparable> parameterComparable, Object o) throws Exception {
return objectResolver.resolve(jpqlContext, parameterComparable) + " <= " + objectResolver.resolve(jpqlContext, o);
}
@Override
public String ne(JPQLContext jpqlContext, Parameter parameter, Object o) throws Exception {
return objectResolver.resolve(jpqlContext, parameter) + " <> " + objectResolver.resolve(jpqlContext, o);
}
@Override
public String between(JPQLContext jpqlContext, ParameterComparable> parameterComparable, Object o, Object o1) throws Exception {
return objectResolver.resolve(jpqlContext, parameterComparable) + " BETWEEN " + objectResolver.resolve(jpqlContext, o) + " AND " + objectResolver.resolve(jpqlContext, o1);
}
@Override
public String in(JPQLContext jpqlContext, Parameter parameter, PreResult> preResult) throws Exception {
return objectResolver.resolve(jpqlContext, parameter) + " IN(" + objectResolver.resolve(jpqlContext, preResult) + ")";
}
@Override
public String notIn(JPQLContext jpqlContext, Parameter parameter, PreResult> preResult) throws Exception {
return objectResolver.resolve(jpqlContext, parameter) + " NOT IN(" + objectResolver.resolve(jpqlContext, preResult) + ")";
}
@Override
public String like(JPQLContext jpqlContext, Parameter parameter, Object[] objects) throws Exception {
String str = objectResolver.resolve(jpqlContext, parameter) + " LIKE ";
for (int i = 0; i < objects.length; ++i) {
Object o = objects[i];
if (o instanceof String && o.equals("%") || o.equals("_")) {
if (i == 0 && objects.length == 1) str += "'" + o.toString() + "'";
else if (i == 0) str += ("'" + o.toString() + "'||");
else if (i == objects.length - 1) str += ("||'" + o.toString() + "'");
else str += "||'" + o.toString() + "'||";
} else {
str += objectResolver.resolve(jpqlContext, o);
}
}
return str;
}
@Override
public String isNull(JPQLContext jpqlContext, Parameter parameter) throws Exception {
return objectResolver.resolve(jpqlContext, parameter) + " IS NULL";
}
@Override
public String isNotNull(JPQLContext jpqlContext, Parameter parameter) throws Exception {
return objectResolver.resolve(jpqlContext, parameter) + " IS NOT NULL";
}
@Override
public String member(JPQLContext jpqlContext, Parameter parameter, ParameterAggregate parameterAggregate) throws Exception {
return objectResolver.resolve(jpqlContext, parameter) + " MEMBER " + objectResolver.resolve(jpqlContext, parameterAggregate);
}
@Override
public String reverseMember(JPQLContext jpqlContext, ParameterAggregate parameterAggregate, Object o) throws Exception {
return objectResolver.resolve(jpqlContext, o) + " MEMBER " + objectResolver.resolve(jpqlContext, parameterAggregate);
}
@Override
public String notMember(JPQLContext jpqlContext, Parameter parameter, ParameterAggregate parameterAggregate) throws Exception {
return objectResolver.resolve(jpqlContext, parameter) + " NOT MEMBER " + objectResolver.resolve(jpqlContext, parameterAggregate);
}
@Override
public String reverseNotMember(JPQLContext jpqlContext, ParameterAggregate parameterAggregate, Object o) throws Exception {
return objectResolver.resolve(jpqlContext, o) + " NOT MEMBER " + objectResolver.resolve(jpqlContext, parameterAggregate);
}
@Override
public void setObjectResolver(ObjectResolver objectResolver) {
this.objectResolver = objectResolver;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy