DetachedCriteria多条件查询or,disjunction

来源:互联网 发布:小t娱乐网源码 编辑:程序博客网 时间:2024/06/11 18:56

使用Disjunction来做sql中or的配置。

首先看看Disjunction的结构:

public class Disjunction extends Junction {protected Disjunction() {super("or");}}

public class Junction implements Criterion {...}

应用:

String[] diffFlagArray = finder.getDiffFlags().split(",");Disjunction disjunction = Restrictions.disjunction();  for(String flag : diffFlagArray){if(flag.equalsIgnoreCase("portName")){disjunction.add(Restrictions.eq("portNameDiff", '1'));}else if(flag.equalsIgnoreCase("trustor")){disjunction.add(Restrictions.eq("trustorDiff", '1'));}else if(flag.equalsIgnoreCase("trustee")){disjunction.add(Restrictions.eq("trusteeDiff", '1'));}else if(flag.equalsIgnoreCase("custodian")){disjunction.add(Restrictions.eq("custodianDiff", '1'));}else if(flag.equalsIgnoreCase("investManager")){disjunction.add(Restrictions.eq("investManagerDiff", '1'));}else if(flag.equalsIgnoreCase("acountManager")){disjunction.add(Restrictions.eq("acountManagerDiff", '1'));}}criteria.add(disjunction);

这样生成的sql语句:

and (                this_.c_port_name_diff=?                 or this_.c_trustor_diff=?                 or this_.c_trustee_diff=?                 or this_.c_custodian_diff=?                 or this_.c_invest_manager_diff=?                 or this_.c_acount_manager_diff=?            ) 


0 0
原创粉丝点击