Hibernate Restrictions用法

Hibernate  API:http://docs.jboss.org/hibernate/orm/3.5/javadocs/overview-summary.html

转载地址:http://blog.163.com/zhaowenchao_vip/blog/static/1715151442012411101741608/

  1. 方法说明


方法

说明

Restrictions.eq

Restrictions.ne

Restrictions.allEq

<>

利用Map来进行多个等于的限制

Restrictions.gt

Restrictions.ge

>=

Restrictions.lt

Restrictions.le

<=

Restrictions.between

BETWEEN

Restrictions.like

LIKE

Restrictions.in

in

Restrictions.and

and

Restrictions.or

or

Restrictions.sqlRestriction

用SQL限定查询




2,QBC常用限定方法



Restrictions.eq --> equal,等于.


Restrictions.ne --> not-equals,不等于


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'"


例子:

 
 
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import java.util.Set;
  6. import java.util.TreeSet;
  7. import org.hibernate.Criteria;
  8. import org.hibernate.Hibernate;
  9. import org.hibernate.criterion.MatchMode;
  10. import org.hibernate.criterion.Order;
  11. import org.hibernate.criterion.Restrictions;
  12. import com.happy.dao.BaseHibernateDAO;
  13. import com.happy.entity.AwardNums;
  14. import com.happy.test.util.HandleList;
  15. /**
  16. * @author happy
  17. *
  18. */
  19. public class Restriction extends BaseHibernateDAO {
  20. public static void main(String[] args) {
  21. Restriction query = new Restriction();
  22. query.query();
  23. }
  24. /**
  25. * 获取查询别名
  26. */
  27. @SuppressWarnings("unchecked")
  28. public void queryAlias() {
  29. Criteria criteria = getSession().createCriteria(AwardNums.class);
  30. // 获取别名:eg:this
  31. System.out.println(criteria.getAlias());
  32. HandleList.print(criteria.list());
  33. }
  34. /**
  35. * 对查询排序
  36. */
  37. @SuppressWarnings("unchecked")
  38. public void queryOrder() {
  39. Criteria criteria = getSession().createCriteria(AwardNums.class);
  40. criteria.addOrder(Order.desc("id"));
  41. HandleList.print(criteria.list());
  42. }
  43. /**
  44. * query by Between
  45. */
  46. @SuppressWarnings("unchecked")
  47. public void queryBetween() {
  48. Criteria criteria = getSession().createCriteria(AwardNums.class);
  49. // 第一个参数是属性,第一个是小的数值,第三个是大的数值
  50. criteria.add(Restrictions.between("id", 17720820, 17720830));
  51. HandleList.print(criteria.list());
  52. }
  53. /**
  54. * query by idEq
  55. */
  56. @SuppressWarnings("unchecked")
  57. public void queryIdEq() {
  58. Criteria criteria = getSession().createCriteria(AwardNums.class);
  59. // id=17720820
  60. criteria.add(Restrictions.idEq(17720820));
  61. HandleList.print(criteria.list());
  62. }
  63. /**
  64. * 忽略大小写查询query by ilike
  65. */
  66. @SuppressWarnings("unchecked")
  67. public void queryIlike() {
  68. Criteria criteria = getSession().createCriteria(AwardNums.class);
  69. // 忽略大小写,05结束的
  70. criteria.add(Restrictions.ilike("numbers", "05", MatchMode.END));
  71. HandleList.print(criteria.list());
  72. }
  73. /**
  74. * 正常like查询 query by like sql:this_.numbers like ?
  75. */
  76. @SuppressWarnings("unchecked")
  77. public void queryLike() {
  78. Criteria criteria = getSession().createCriteria(AwardNums.class);
  79. // 05介绍的
  80. criteria.add(Restrictions.like("numbers", "05", MatchMode.END));
  81. HandleList.print(criteria.list());
  82. }
  83. /**
  84. * 正常like查询 query by like sql:this_.numbers like ?
  85. */
  86. @SuppressWarnings("unchecked")
  87. public void queryLike2() {
  88. Criteria criteria = getSession().createCriteria(AwardNums.class);
  89. // 05开始的
  90. criteria.add(Restrictions.like("numbers", "05%"));
  91. HandleList.print(criteria.list());
  92. }
  93. @SuppressWarnings("unchecked")
  94. public void queryInArray() {
  95. Criteria criteria = getSession().createCriteria(AwardNums.class);
  96. // new int[]错误的
  97. Integer[] arrInt = new Integer[] { 17720808, 17720809, 17720810 };
  98. criteria.add(Restrictions.in("id", arrInt));
  99. HandleList.print(criteria.list());
  100. }
  101. @SuppressWarnings("unchecked")
  102. public void queryInList() {
  103. Criteria criteria = getSession().createCriteria(AwardNums.class);
  104. // new int[]错误的
  105. List<Integer> list = new ArrayList<Integer>();
  106. list.add(17720808);
  107. list.add(17720809);
  108. list.add(17720810);
  109. criteria.add(Restrictions.in("id", list));
  110. HandleList.print(criteria.list());
  111. }
  112. @SuppressWarnings("unchecked")
  113. public void queryInSet() {
  114. Criteria criteria = getSession().createCriteria(AwardNums.class);
  115. // new int[]错误的
  116. Set<Integer> set = new TreeSet<Integer>();
  117. set.add(17720808);
  118. set.add(17720809);
  119. set.add(17720810);
  120. criteria.add(Restrictions.in("id", set));
  121. HandleList.print(criteria.list());
  122. }
  123. @SuppressWarnings("unchecked")
  124. public void queryInMap() {
  125. Criteria criteria = getSession().createCriteria(AwardNums.class);
  126. Map<String, Integer> map = new HashMap<String, Integer>();
  127. // String不能命名重复,否者会过滤重复的
  128. map.put("1", 17720808);
  129. map.put("2", 17720809);
  130. map.put("3", 17720810);
  131. criteria.add(Restrictions.in("id", map.values()));
  132. HandleList.print(criteria.list());
  133. }
  134. @SuppressWarnings("unchecked")
  135. public void queryIsEmpty() {
  136. Criteria criteria = getSession().createCriteria(AwardNums.class);
  137. // Property path [com.happy.entity.AwardNums.issue] does not reference a
  138. // collection
  139. criteria.add(Restrictions.isEmpty("issue"));
  140. HandleList.print(criteria.list());
  141. }
  142. @SuppressWarnings("unchecked")
  143. public void queryIsNotEmpty() {
  144. Criteria criteria = getSession().createCriteria(AwardNums.class);
  145. // Property path [com.happy.entity.AwardNums.issue] does not reference a
  146. // collection
  147. criteria.add(Restrictions.isNotEmpty("issue"));
  148. HandleList.print(criteria.list());
  149. }
  150. /**
  151. * this_.id is null
  152. */
  153. @SuppressWarnings("unchecked")
  154. public void queryIsNull() {
  155. Criteria criteria = getSession().createCriteria(AwardNums.class);
  156. // this_.id is null
  157. criteria.add(Restrictions.isNull("id"));
  158. HandleList.print(criteria.list());
  159. }
  160. /**
  161. * this_.id is not null
  162. */
  163. @SuppressWarnings("unchecked")
  164. public void queryIsNotNull() {
  165. Criteria criteria = getSession().createCriteria(AwardNums.class);
  166. // this_.id is not null
  167. criteria.add(Restrictions.isNotNull("id"));
  168. HandleList.print(criteria.list());
  169. }
  170. @SuppressWarnings("unchecked")
  171. public void querySizeEq() {
  172. Criteria criteria = getSession().createCriteria(AwardNums.class);
  173. // Unknown collection role: com.happy.entity.AwardNums.id
  174. criteria.add(Restrictions.sizeEq("id", 15));
  175. HandleList.print(criteria.list());
  176. }
  177. /**
  178. * this_.id < 17720812
  179. */
  180. @SuppressWarnings("unchecked")
  181. public void querySqlRestriction() {
  182. Criteria criteria = getSession().createCriteria(AwardNums.class);
  183. String alias = criteria.getAlias();
  184. // _很重要的
  185. criteria.add(Restrictions.sqlRestriction(alias + "_.id < 17720812"));
  186. HandleList.print(criteria.list());
  187. }
  188. /**
  189. * 仅需要:{alias}.id即可
  190. */
  191. @SuppressWarnings("unchecked")
  192. public void querySqlRestrictionEasy() {
  193. Criteria criteria = getSession().createCriteria(AwardNums.class);
  194. // {alias}.id
  195. criteria.add(Restrictions.sqlRestriction("{alias}.id < 17720812"));
  196. HandleList.print(criteria.list());
  197. }
  198. /**
  199. * lower(this_.numbers) like lower(?)
  200. */
  201. @SuppressWarnings("unchecked")
  202. public void querySqlRestrictionType() {
  203. Criteria criteria = getSession().createCriteria(AwardNums.class);
  204. // lower(this_.numbers) like lower(?)
  205. criteria.add(Restrictions
  206. .sqlRestriction("lower({alias}.numbers) like lower(?)", "%09",
  207. Hibernate.STRING));
  208. HandleList.print(criteria.list());
  209. }
  210. /**
  211. * where 1=1(可组合使用)
  212. */
  213. @SuppressWarnings("unchecked")
  214. public void queryConjunction() {
  215. Criteria criteria = getSession().createCriteria(AwardNums.class);
  216. // 永真情况下查询
  217. criteria.add(Restrictions.conjunction());
  218. HandleList.print(criteria.list());
  219. }
  220. /**
  221. * where 1=1(和conjunction一样还不知区别)
  222. */
  223. @SuppressWarnings("unchecked")
  224. public void queryDisjunction() {
  225. Criteria criteria = getSession().createCriteria(AwardNums.class);
  226. // 永真情况下查询
  227. criteria.add(Restrictions.disjunction());
  228. HandleList.print(criteria.list());
  229. }
  230. /**
  231. * where 1=1(和conjunction一样还不知区别)
  232. */
  233. @SuppressWarnings("unchecked")
  234. public void queryNaturalId() {
  235. Criteria criteria = getSession().createCriteria(AwardNums.class);
  236. // 永真情况下查询
  237. criteria.add(Restrictions.naturalId());
  238. HandleList.print(criteria.list());
  239. }
  240. @SuppressWarnings("unchecked")
  241. public void queryCompare() {
  242. Criteria criteria = getSession().createCriteria(AwardNums.class);
  243. // this_.id=? eq&&ne this_.id<>?
  244. criteria.add(Restrictions.eq("id", 17719845));
  245. // this_.id>=? ge&&le this_.id<=?
  246. criteria.add(Restrictions.ge("id", 17719845));
  247. // this_.id>? gt&&lt this_.id<?
  248. criteria.add(Restrictions.gt("id", 17719845));
  249. // this_.id<=?
  250. criteria.add(Restrictions.le("id", 17719845));
  251. // this_.id<?
  252. criteria.add(Restrictions.lt("id", 17719845));
  253. // this_.id<>?
  254. criteria.add(Restrictions.ne("id", 17719845));
  255. HandleList.print(criteria.list());
  256. }
  257. @SuppressWarnings("unchecked")
  258. public void queryCompareProperty() {
  259. Criteria criteria = getSession().createCriteria(AwardNums.class);
  260. // this_.issue=this_.numbers eq&&ne this_.id<>?
  261. criteria.add(Restrictions.eqProperty("id", "issue"));
  262. // this_.id>=this_.issue ge&&le this_.id<=?
  263. criteria.add(Restrictions.geProperty("id", "issue"));
  264. // this_.id>this_.issue gt&&lt this_.id<?
  265. criteria.add(Restrictions.gtProperty("id", "issue"));
  266. // this_.id<=this_.issue
  267. criteria.add(Restrictions.leProperty("id", "issue"));
  268. // this_.id<this_.issue
  269. criteria.add(Restrictions.ltProperty("id", "issue"));
  270. // this_.id<>this_.issue
  271. criteria.add(Restrictions.neProperty("id", "issue"));
  272. HandleList.print(criteria.list());
  273. }
  274. /**
  275. * this_.id=? or this_.id=?
  276. */
  277. @SuppressWarnings("unchecked")
  278. public void queryOr() {
  279. Criteria criteria = getSession().createCriteria(AwardNums.class);
  280. // 或者查询
  281. criteria.add(Restrictions.or(Restrictions.eq("id", 17719845),
  282. Restrictions.eq("id", 17719846)));
  283. HandleList.print(criteria.list());
  284. }
  285. /**
  286. * this_.id=? and this_.issue=?
  287. */
  288. @SuppressWarnings("unchecked")
  289. public void queryAnd() {
  290. Criteria criteria = getSession().createCriteria(AwardNums.class);
  291. // 并且查询
  292. criteria.add(Restrictions.and(Restrictions.eq("id", 17719845),
  293. Restrictions.eq("issue", "2011100")));
  294. HandleList.print(criteria.list());
  295. }
  296. /**
  297. * not this_.id=?
  298. */
  299. @SuppressWarnings("unchecked")
  300. public void query() {
  301. Criteria criteria = getSession().createCriteria(AwardNums.class);
  302. // 排除查询
  303. criteria.add(Restrictions.not(Restrictions.eq("id", 17719841)));
  304. HandleList.print(criteria.list());
  305. }
  306. }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值