📄 criteriacondition.java
字号:
package pl.criteria;
import java.util.*;
/**
* PersistenceCriteria 条件
* 代表sql语句中的WHERE子句
*/
public class CriteriaCondition implements CriteriaPart {
private Vector parts = new Vector();
private pl.map.ClassMap classMap = null;
/**
* Creates CreteriaCondition.
*/
public CriteriaCondition(pl.map.ClassMap classMap) {
super();
this.classMap = classMap;
}
/**
* 以OR形式加入一个条件部分类
*
*/
public void addOrCriteria(CriteriaPart orCriteria) {
parts.add(new Part(orCriteria, Part.OR_PART));
}
/**
* 以AND形式加入一个条件部分类
*
*/
public void addAndCriteria(CriteriaPart andCriteria) {
parts.add(new Part(andCriteria, Part.AND_PART));
}
/**
* 将条件类转换为sql语句的where子句,生成完整的pl.sql.SqlStatement
*
*/
public void fillSqlStatement(pl.sql.SqlStatement statement,
java.util.Iterator parameters) throws pl.
PlException {
if (parts.size() > 0) {
statement.addSqlClause("(");//where 子句用括号"()"括起来
for (int i = 0; i < getSize(); i++) {
Part part = (Part) parts.get(i);
if (i != 0) {
switch (part.kind) {//增加 AND 或 OR
case Part.AND_PART:
statement.addSqlClause(" " +
classMap.getRelationalDatabase().getClauseStringAnd() +
" ");
break;
case Part.OR_PART:
statement.addSqlClause(" " +
classMap.getRelationalDatabase().getClauseStringOr() +
" ");
break;
}
}
//匹配 一个完整的 条件部分, 如 person.id=2
part.part.fillSqlStatement(statement, parameters);
}
statement.addSqlClause(")");
}
}
/**
* 获取条件的数量
*
*
* @return int
*/
public int getSize() {
return parts.size();
}
}
class Part {
public final static int OR_PART = 0;
public final static int AND_PART = 1;
public CriteriaPart part = null;
public int kind = AND_PART;
public Part(CriteriaPart part, int kind) {
this.part = part;
this.kind = kind;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -