Hibernate Criteria 组合查询条件
2014-06-05 16:07
417 查看
Restrictions.eq --> equal,等于.
Restrictions.allEq -->
参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq 的效果
Restrictions.gt --> great-than > 大于
Restrictions.ge --> great-equal >= 大于等于
Restrictions.lt --> less-than, < 小于
Restrictions.le --> less-equal <= 小于等于
Restrictions.between --> 对应SQL的between子句
Restrictions.like --> 对应SQL的LIKE子句
Restrictions.in --> 对应SQL的in子句
Restrictions.and --> and 关系
Restrictions.or --> or 关系
Restrictions.isNull --> 判断属性是否为空,为空则返回true
Restrictions.isNotNull --> 与isNull相反
Restrictions.sqlRestriction --> SQL限定的查询
Order.asc --> 根据传入的字段进行升序排序
Order.desc --> 根据传入的字段进行降序排序
MatchMode.EXACT --> 字符串精确匹配.相当于"like
'value'"
MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like
'%value%'"
MatchMode.START --> 字符串在最前面的位置.相当于"like
'value%'"
MatchMode.END --> 字符串在最后面的位置.相当于"like
'%value'"
Configuration config = new Configuration();
SessionFactory sessionFactory = config.configure().buildSessionFactory();
Criteria criteria = session.createCriteria(MyPoJo.class);
//等于条件
//Restrictions.eq(String,object);
criteria.add(Restrictions.eq("UserID", 1001));
//其它条件以此类推
Restrictions.gt 对应SQL中的 “field > value ” 表达式
Restrictions.ge 对应SQL中的 “field >= value” 表达式
Restrictions.lt 对应SQL中的 “field < value” 表达式
Restrictions.le 对应SQL中的 “field <= value” 表达式
Restrictions.between 对应SQL中的 “between” 表达式
Restrictions.in 传入一个数组进行IN查询
Restrictions.like 进行模糊查询
Restrictions.ilike 不区分大小写的模糊查询
Java代码
public Pager getSuSongFIn(String JLID, String jiaoKuanBM, String anJianBS,
String jiaoKuanRBM, double yuJiaoJE, String chuangJianRBM,
String SYS_TIME_START, String SYS_TIME_END,
String yuJiaoSJ_START,String yuJiaoSJ_END,String queRenSJ_START,String queRenSJ_END, int is_Complete,
String chuangJianR,String jiaoKuanR,String queRenR,String feiYongLX,int is_ZhiXing,
String sortName, String sortOrder,int pageNo,int pageSize) {
Pager pager = new Pager();//分页的装载工具类
try {
Criteria criteria = daoTool.createCriteria(TSpSsfIn.class);//创建Hibernate参数式查询
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");//定义日期格式化工具,用于查询条件增加
//判断组装查询条件
if(StringHelper.isNotEmpty(JLID)){
criteria.add(Restrictions.eq("JLID", JLID));
}
if(StringHelper.isNotEmpty(jiaoKuanBM)){
criteria.add(Restrictions.eq("jiaoKuanBM", jiaoKuanBM));
}
if(StringHelper.isNotEmpty(feiYongLX)){
criteria.add(Restrictions.eq("feiYongLX", feiYongLX));
}
if(StringHelper.isNotEmpty(anJianBS)){
criteria.add(Restrictions.eq("anJianBS", anJianBS));
}
if(StringHelper.isNotEmpty(jiaoKuanRBM)){
criteria.add(Restrictions.eq("jiaoKuanRBM", jiaoKuanRBM));
}
if(yuJiaoJE != -1){
criteria.add(Restrictions.eq("yuJiaoJE", yuJiaoJE));
}
if(StringHelper.isNotEmpty(yuJiaoSJ_START)){
criteria.add(Restrictions.ge("yuJiaoSJ", Timestamp.valueOf(yuJiaoSJ_START + " 00:00:00")));
}
if(StringHelper.isNotEmpty(yuJiaoSJ_END)){
criteria.add(Restrictions.le("yuJiaoSJ", Timestamp.valueOf(yuJiaoSJ_END + " 23:59:59")));
}
if(StringHelper.isNotEmpty(SYS_TIME_START)){
criteria.add(Restrictions.ge("SYS_TIME", Timestamp.valueOf(SYS_TIME_START + " 00:00:00")));
}
if(StringHelper.isNotEmpty(SYS_TIME_END)){
criteria.add(Restrictions.le("SYS_TIME", Timestamp.valueOf(SYS_TIME_END + " 23:59:59")));
}
if(StringHelper.isNotEmpty(queRenSJ_START)){
criteria.add(Restrictions.ge("queRenJKRQ", Timestamp.valueOf(queRenSJ_START + " 00:00:00")));
}
if(StringHelper.isNotEmpty(queRenSJ_END)){
criteria.add(Restrictions.le("queRenJKRQ", Timestamp.valueOf(queRenSJ_END + " 00:00:00")));
}
if(is_Complete != -1){
criteria.add(Restrictions.eq("is_Complete", is_Complete));
}
if(is_ZhiXing != -1){
criteria.add(Restrictions.eq("is_ZhiXing", is_ZhiXing));
}
if(StringHelper.isNotEmpty(chuangJianR)){
criteria.createAlias("creator", "creator");//增加表关联并做查询操作(等同于在SQL中加入了两张表的直等关联,具体关联子表用什么字段是通过HRM.XML配置文件进行配置)
criteria.add(Restrictions.ilike("creator.userName", chuangJianR,MatchMode.ANYWHERE));
}
if(StringHelper.isNotEmpty(queRenR)){
criteria.createAlias("userInfo", "userInfo");//增加表关联并做查询操作
criteria.add(Restrictions.ilike("userInfo.userName", queRenR,MatchMode.ANYWHERE));
}
if(StringHelper.isNotEmpty(jiaoKuanR)){
criteria.add(Restrictions.ilike("jiaoKuanR", jiaoKuanR,MatchMode.ANYWHERE));
}
// 获取根据条件分页查询的总行数
int rowCount = (Integer) criteria.setProjection(Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
//进行排序判断方式和需要排序的字段并加入
if(StringHelper.isNotEmpty(sortName) && StringHelper.isNotEmpty(sortOrder)){
if(sortOrder.equals("asc")){
criteria.addOrder(Order.asc(sortName));
}else if(sortOrder.equals("desc")){
criteria.addOrder(Order.desc(sortName));
}
}
//设置分页信息
criteria.setFirstResult((pageNo - 1) * pageSize); //从那条数据开始
criteria.setMaxResults(pageSize); //获取条数
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); //只返回根对象,不加此限制结果将返回数组,包含根对象与关联对象
List result = criteria.list(); //获取查询结果
//装载查询结果
pager.setPageNo(pageNo);
pager.setPageSize(pageSize);
pager.setRowCount(rowCount);
pager.setResult(result);
} catch (Exception e) {
log.error("[SuSongFManagerImp.getSuSongFIn(String JLID, String jiaoKuanBM, String anJianBS," +
"String jiaoKuanRBM, double yuJiaoJE, String chuangJianRBM," +
"String SYS_TIME_START, String SYS_TIME_END, int is_Complete," +
"String sortName, String sortOrder,int pageNo,int pageSize)]"+e.getMessage());
}
return pager;
}
Restrictions.allEq -->
参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq 的效果
Restrictions.gt --> great-than > 大于
Restrictions.ge --> great-equal >= 大于等于
Restrictions.lt --> less-than, < 小于
Restrictions.le --> less-equal <= 小于等于
Restrictions.between --> 对应SQL的between子句
Restrictions.like --> 对应SQL的LIKE子句
Restrictions.in --> 对应SQL的in子句
Restrictions.and --> and 关系
Restrictions.or --> or 关系
Restrictions.isNull --> 判断属性是否为空,为空则返回true
Restrictions.isNotNull --> 与isNull相反
Restrictions.sqlRestriction --> SQL限定的查询
Order.asc --> 根据传入的字段进行升序排序
Order.desc --> 根据传入的字段进行降序排序
MatchMode.EXACT --> 字符串精确匹配.相当于"like
'value'"
MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like
'%value%'"
MatchMode.START --> 字符串在最前面的位置.相当于"like
'value%'"
MatchMode.END --> 字符串在最后面的位置.相当于"like
'%value'"
Configuration config = new Configuration();
SessionFactory sessionFactory = config.configure().buildSessionFactory();
Criteria criteria = session.createCriteria(MyPoJo.class);
//等于条件
//Restrictions.eq(String,object);
criteria.add(Restrictions.eq("UserID", 1001));
//其它条件以此类推
Restrictions.gt 对应SQL中的 “field > value ” 表达式
Restrictions.ge 对应SQL中的 “field >= value” 表达式
Restrictions.lt 对应SQL中的 “field < value” 表达式
Restrictions.le 对应SQL中的 “field <= value” 表达式
Restrictions.between 对应SQL中的 “between” 表达式
Restrictions.in 传入一个数组进行IN查询
Restrictions.like 进行模糊查询
Restrictions.ilike 不区分大小写的模糊查询
Java代码
public Pager getSuSongFIn(String JLID, String jiaoKuanBM, String anJianBS,
String jiaoKuanRBM, double yuJiaoJE, String chuangJianRBM,
String SYS_TIME_START, String SYS_TIME_END,
String yuJiaoSJ_START,String yuJiaoSJ_END,String queRenSJ_START,String queRenSJ_END, int is_Complete,
String chuangJianR,String jiaoKuanR,String queRenR,String feiYongLX,int is_ZhiXing,
String sortName, String sortOrder,int pageNo,int pageSize) {
Pager pager = new Pager();//分页的装载工具类
try {
Criteria criteria = daoTool.createCriteria(TSpSsfIn.class);//创建Hibernate参数式查询
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");//定义日期格式化工具,用于查询条件增加
//判断组装查询条件
if(StringHelper.isNotEmpty(JLID)){
criteria.add(Restrictions.eq("JLID", JLID));
}
if(StringHelper.isNotEmpty(jiaoKuanBM)){
criteria.add(Restrictions.eq("jiaoKuanBM", jiaoKuanBM));
}
if(StringHelper.isNotEmpty(feiYongLX)){
criteria.add(Restrictions.eq("feiYongLX", feiYongLX));
}
if(StringHelper.isNotEmpty(anJianBS)){
criteria.add(Restrictions.eq("anJianBS", anJianBS));
}
if(StringHelper.isNotEmpty(jiaoKuanRBM)){
criteria.add(Restrictions.eq("jiaoKuanRBM", jiaoKuanRBM));
}
if(yuJiaoJE != -1){
criteria.add(Restrictions.eq("yuJiaoJE", yuJiaoJE));
}
if(StringHelper.isNotEmpty(yuJiaoSJ_START)){
criteria.add(Restrictions.ge("yuJiaoSJ", Timestamp.valueOf(yuJiaoSJ_START + " 00:00:00")));
}
if(StringHelper.isNotEmpty(yuJiaoSJ_END)){
criteria.add(Restrictions.le("yuJiaoSJ", Timestamp.valueOf(yuJiaoSJ_END + " 23:59:59")));
}
if(StringHelper.isNotEmpty(SYS_TIME_START)){
criteria.add(Restrictions.ge("SYS_TIME", Timestamp.valueOf(SYS_TIME_START + " 00:00:00")));
}
if(StringHelper.isNotEmpty(SYS_TIME_END)){
criteria.add(Restrictions.le("SYS_TIME", Timestamp.valueOf(SYS_TIME_END + " 23:59:59")));
}
if(StringHelper.isNotEmpty(queRenSJ_START)){
criteria.add(Restrictions.ge("queRenJKRQ", Timestamp.valueOf(queRenSJ_START + " 00:00:00")));
}
if(StringHelper.isNotEmpty(queRenSJ_END)){
criteria.add(Restrictions.le("queRenJKRQ", Timestamp.valueOf(queRenSJ_END + " 00:00:00")));
}
if(is_Complete != -1){
criteria.add(Restrictions.eq("is_Complete", is_Complete));
}
if(is_ZhiXing != -1){
criteria.add(Restrictions.eq("is_ZhiXing", is_ZhiXing));
}
if(StringHelper.isNotEmpty(chuangJianR)){
criteria.createAlias("creator", "creator");//增加表关联并做查询操作(等同于在SQL中加入了两张表的直等关联,具体关联子表用什么字段是通过HRM.XML配置文件进行配置)
criteria.add(Restrictions.ilike("creator.userName", chuangJianR,MatchMode.ANYWHERE));
}
if(StringHelper.isNotEmpty(queRenR)){
criteria.createAlias("userInfo", "userInfo");//增加表关联并做查询操作
criteria.add(Restrictions.ilike("userInfo.userName", queRenR,MatchMode.ANYWHERE));
}
if(StringHelper.isNotEmpty(jiaoKuanR)){
criteria.add(Restrictions.ilike("jiaoKuanR", jiaoKuanR,MatchMode.ANYWHERE));
}
// 获取根据条件分页查询的总行数
int rowCount = (Integer) criteria.setProjection(Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
//进行排序判断方式和需要排序的字段并加入
if(StringHelper.isNotEmpty(sortName) && StringHelper.isNotEmpty(sortOrder)){
if(sortOrder.equals("asc")){
criteria.addOrder(Order.asc(sortName));
}else if(sortOrder.equals("desc")){
criteria.addOrder(Order.desc(sortName));
}
}
//设置分页信息
criteria.setFirstResult((pageNo - 1) * pageSize); //从那条数据开始
criteria.setMaxResults(pageSize); //获取条数
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); //只返回根对象,不加此限制结果将返回数组,包含根对象与关联对象
List result = criteria.list(); //获取查询结果
//装载查询结果
pager.setPageNo(pageNo);
pager.setPageSize(pageSize);
pager.setRowCount(rowCount);
pager.setResult(result);
} catch (Exception e) {
log.error("[SuSongFManagerImp.getSuSongFIn(String JLID, String jiaoKuanBM, String anJianBS," +
"String jiaoKuanRBM, double yuJiaoJE, String chuangJianRBM," +
"String SYS_TIME_START, String SYS_TIME_END, int is_Complete," +
"String sortName, String sortOrder,int pageNo,int pageSize)]"+e.getMessage());
}
return pager;
}
相关文章推荐
- [转]Hibernate条件查询(Criteria Query)
- Hibernate条件查询(Criteria Query)
- Hibernate动态条件查询(Criteria Query)
- 05-Hibernate的条件查询Criteria
- hibernate hql 查询指定…
- Hibernate条件查询(Criteria Query)
- hibernate 多条件组合查询之sql拼接
- in及not&nbsp;in与组合查询的效率比较
- hibernate的多条件查询——Criteria Query的应用
- hibernate的Criteria Query
- hibernate 多条件组合查询 之 sql 拼接
- JAVA Hibernate 条件查询 Criteria
- Hibernate中Criteria的使用(条件查询)
- hibernate hql 查询指定…
- hibernate 多条件组合查询之sql拼接
- Hibernate条件查询(DetachedCriteria)
- hibernate --Criteria条件查询
- 【转】Hibernate动态条件查询(Criteria Query)
- hibernate 多条件组合查询 之 sql 拼接
- hibernate hql 查询指定…