hibernate是一个开放的ORM框架,完成数据持久化
层级关系public class AtpMemberRiskDaoImpl extends BaseDaoAdapter<AtpMemberRisk, Long> implements AtpMemberRiskDao{
。。。
}
public class BaseDaoAdapter extends BaseDaoSupport{}
public class BaseDaoSupport extends HibernateDaoSupport
implements BaseDao
{}
hibernate的Criterion
单个字段查询
Criterion cond = Restrictions.eq("membercode",membercode);
List<AtpMemberRisk> result = find(cond);
if(result!=null&&result.size>0){
return result;
}else return null;
多字段查询
public List<AtpProd> queryByCond(AtpProdCond cond,Page page,QueryOrder[] qOrders) {
/*
* 处理查询条件
*/
Criterion[] criterions = null;
if(cond != null) {
List<Criterion> criterionList = new ArrayList<Criterion>();
// 产品编码
if(!StringUtil.isEmpty(cond.getAtpProdCode())) {
criterionList.add(Restrictions.eq("atpProdCode", cond.getAtpProdCode()));
}
// 产品状态
if(!StringUtil.isEmpty(cond.getStatus())) {
criterionList.add(Restrictions.eq("status", cond.getStatus()));
}
else if(cond.getStatusSet()!=null && cond.getStatusSet().size()>0) {
criterionList.add(Restrictions.in("status", cond.getStatusSet()));
}
// 产品类型
if(!StringUtil.isEmpty(cond.getFinProdType())) {
criterionList.add(Restrictions.eq("finProdType", cond.getFinProdType()));
}
// 产品发布终端
if(cond.getSupportTerminal()!=null && cond.getSupportTerminal() != SupportTerminalType.All.val()) {
Set<Integer> stSet = new HashSet<Integer>();
stSet.add(SupportTerminalType.All.val());
stSet.add(cond.getSupportTerminal());
criterionList.add(Restrictions.in("supportTerminal", stSet));
}
// 用户标识
if(cond.getUserFlag() != null) {
criterionList.add(Restrictions.eq("userFlag", cond.getUserFlag()));
}
// 用户类型,查询支持指定人群产品
if(!StringUtil.isEmpty(cond.getUserType())) {
// 不支持所有人群
if(AtpProdUserType.NONE.equals(cond.getUserType())) {
criterionList.add(Restrictions.eq("userType", cond.getUserType()));
}
// 非支持所有人群
else if(!AtpProdUserType.ALL.equals(cond.getUserType())) {
Criterion se = null;
AtpProdUserType userType = new AtpProdUserType(cond.getUserType());
boolean[] types = userType.getItems();
for(int i=0; i<types.length; i++) {
if(types[i]) {
AtpProdUserType item = (new AtpProdUserType());
item.setItem(i, true);
if(se == null) {
se = Restrictions.like("userType", item.toString().replace(AtpProdUserType.FALSE, '_'));
}
else {
se = Restrictions.or(se, Restrictions.like("userType", item.toString().replace(AtpProdUserType.FALSE, '_')));
}
}
}
criterionList.add(se);
}
}
if(criterionList.size() > 0) {
criterions = (Criterion[])criterionList.toArray(new Criterion[criterionList.size()]);
}
}
/*
* 处理排序信息
*/
Order[] orders = null;
// 若排序条件为空,设定默认排序方式
if(qOrders==null || qOrders.length==0) {
// 默认按照“产品开始日期”升序排列
orders = new Order[2];
orders[0] = Order.desc("displayOrder");
orders[1] = Order.desc("horizonFrom");
}
// 转换排序对象
else {
orders = new Order[qOrders.length];
for(int i=0; i<qOrders.length; i++) {
orders[i] = qOrders[i].isAscending() ? Order.asc(qOrders[i].getPropertyName())
: Order.desc(qOrders[i].getPropertyName());
}
}
// 查询
if(criterions != null) {
return find(page, orders, criterions);
} else {
return find(page, orders);
}
}