浏览 3548 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (9) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-27
HQL查询方法一般使用的比较多,一般是通过query方式来查询的.例子如下:
/** * 根据名字来查询 * * @param name */ static void query(String name) { Session s = null; try{ s = HibernateUtil.getSession(); // String hql = "from User as user where user.name=?"; String hql = "from User as user where user.name=:name";//采用这种方式的时候,就用setString(String,String) Query query = s.createQuery(hql); query.setString("name", name); List list = query.list(); //查询从某一条开始到某一条的分页 query.setFirstResult(10); query.setMaxResults(20); for(int i = 0;i<list.size();i++){ System.out.println(list.get(i)); } }finally{ if(s!=null){ s.close(); } } }
而Criteria是一种比HQL更面向对象的查询方式: 创建方式如下:Criteria crit = session.createCriteria(Object.class); crit.add(Restrictions.eqProperty(a,b));
eg: static void query(String name) { Session s = null; try{ s = HibernateUtil.getSession(); Criteria c = s.createCriteria(User.class); c.add(Restrictions.eq("name", name)); c.add(Restrictions.gt("birthday", new Date())); List list = c.list(); for(int i = 0;i<list.size();i++){ System.out.println(list.get(i)); } }finally{ if(s!=null){ s.close(); } } }
关于Restrictions的API如下 public class Restrictions { Restrictions() { //cannot be instantiated } /** * Apply an "equal" constraint to the identifier property * @param propertyName * @param value * @return Criterion */ public static Criterion idEq(Object value) { return new IdentifierEqExpression(value); } /** * Apply an "equal" constraint to the named property * @param propertyName * @param value * @return Criterion */ public static SimpleExpression eq(String propertyName, Object value) { return new SimpleExpression(propertyName, value, "="); } /** * Apply a "not equal" constraint to the named property * @param propertyName * @param value * @return Criterion */ public static SimpleExpression ne(String propertyName, Object value) { return new SimpleExpression(propertyName, value, "<>"); } /** * Apply a "like" constraint to the named property * @param propertyName * @param value * @return Criterion */ public static SimpleExpression like(String propertyName, Object value) { return new SimpleExpression(propertyName, value, " like "); } /** * Apply a "like" constraint to the named property * @param propertyName * @param value * @return Criterion */ public static SimpleExpression like(String propertyName, String value, MatchMode matchMode) { return new SimpleExpression(propertyName, matchMode.toMatchString(value), " like " ); } /** * A case-insensitive "like", similar to Postgres <tt>ilike</tt> * operator * * @param propertyName * @param value * @return Criterion */ public static Criterion ilike(String propertyName, String value, MatchMode matchMode) { return new IlikeExpression(propertyName, value, matchMode); } /** * A case-insensitive "like", similar to Postgres <tt>ilike</tt> * operator * * @param propertyName * @param value * @return Criterion */ public static Criterion ilike(String propertyName, Object value) { return new IlikeExpression(propertyName, value); } /** * Apply a "greater than" constraint to the named property * @param propertyName * @param value * @return Criterion */ public static SimpleExpression gt(String propertyName, Object value) { return new SimpleExpression(propertyName, value, ">"); } /** * Apply a "less than" constraint to the named property * @param propertyName * @param value * @return Criterion */ public static SimpleExpression lt(String propertyName, Object value) { return new SimpleExpression(propertyName, value, "<"); } /** * Apply a "less than or equal" constraint to the named property * @param propertyName * @param value * @return Criterion */ public static SimpleExpression le(String propertyName, Object value) { return new SimpleExpression(propertyName, value, "<="); } /** * Apply a "greater than or equal" constraint to the named property * @param propertyName * @param value * @return Criterion */ public static SimpleExpression ge(String propertyName, Object value) { return new SimpleExpression(propertyName, value, ">="); } /** * Apply a "between" constraint to the named property * @param propertyName * @param lo value * @param hi value * @return Criterion */ public static Criterion between(String propertyName, Object lo, Object hi) { return new BetweenExpression(propertyName, lo, hi); } /** * Apply an "in" constraint to the named property * @param propertyName * @param values * @return Criterion */ public static Criterion in(String propertyName, Object[] values) { return new InExpression(propertyName, values); } /** * Apply an "in" constraint to the named property * @param propertyName * @param values * @return Criterion */ public static Criterion in(String propertyName, Collection values) { return new InExpression( propertyName, values.toArray() ); } /** * Apply an "is null" constraint to the named property * @return Criterion */ public static Criterion isNull(String propertyName) { return new NullExpression(propertyName); } /** * Apply an "equal" constraint to two properties */ public static PropertyExpression eqProperty(String propertyName, String otherPropertyName) { return new PropertyExpression(propertyName, otherPropertyName, "="); } /** * Apply a "not equal" constraint to two properties */ public static PropertyExpression neProperty(String propertyName, String otherPropertyName) { return new PropertyExpression(propertyName, otherPropertyName, "<>"); } /** * Apply a "less than" constraint to two properties */ public static PropertyExpression ltProperty(String propertyName, String otherPropertyName) { return new PropertyExpression(propertyName, otherPropertyName, "<"); } /** * Apply a "less than or equal" constraint to two properties */ public static PropertyExpression leProperty(String propertyName, String otherPropertyName) { return new PropertyExpression(propertyName, otherPropertyName, "<="); } /** * Apply a "greater than" constraint to two properties */ public static PropertyExpression gtProperty(String propertyName, String otherPropertyName) { return new PropertyExpression(propertyName, otherPropertyName, ">"); } /** * Apply a "greater than or equal" constraint to two properties */ public static PropertyExpression geProperty(String propertyName, String otherPropertyName) { return new PropertyExpression(propertyName, otherPropertyName, ">="); } /** * Apply an "is not null" constraint to the named property * @return Criterion */ public static Criterion isNotNull(String propertyName) { return new NotNullExpression(propertyName); } /** * Return the conjuction of two expressions * * @param lhs * @param rhs * @return Criterion */ public static LogicalExpression and(Criterion lhs, Criterion rhs) { return new LogicalExpression(lhs, rhs, "and"); } /** * Return the disjuction of two expressions * * @param lhs * @param rhs * @return Criterion */ public static LogicalExpression or(Criterion lhs, Criterion rhs) { return new LogicalExpression(lhs, rhs, "or"); } /** * Return the negation of an expression * * @param expression * @return Criterion */ public static Criterion not(Criterion expression) { return new NotExpression(expression); } /** * Apply a constraint expressed in SQL, with the given JDBC * parameters. Any occurrences of <tt>{alias}</tt> will be * replaced by the table alias. * * @param sql * @param values * @param types * @return Criterion */ public static Criterion sqlRestriction(String sql, Object[] values, Type[] types) { return new SQLCriterion(sql, values, types); } /** * Apply a constraint expressed in SQL, with the given JDBC * parameter. Any occurrences of <tt>{alias}</tt> will be replaced * by the table alias. * * @param sql * @param value * @param type * @return Criterion */ public static Criterion sqlRestriction(String sql, Object value, Type type) { return new SQLCriterion(sql, new Object[] { value }, new Type[] { type } ); } /** * Apply a constraint expressed in SQL. Any occurrences of <tt>{alias}</tt> * will be replaced by the table alias. * * @param sql * @return Criterion */ public static Criterion sqlRestriction(String sql) { return new SQLCriterion(sql, ArrayHelper.EMPTY_OBJECT_ARRAY, ArrayHelper.EMPTY_TYPE_ARRAY); } /** * Group expressions together in a single conjunction (A and B and C...) * * @return Conjunction */ public static Conjunction conjunction() { return new Conjunction(); } /** * Group expressions together in a single disjunction (A or B or C...) * * @return Conjunction */ public static Disjunction disjunction() { return new Disjunction(); } /** * Apply an "equals" constraint to each property in the * key set of a <tt>Map</tt> * * @param propertyNameValues a map from property names to values * @return Criterion */ public static Criterion allEq(Map propertyNameValues) { Conjunction conj = conjunction(); Iterator iter = propertyNameValues.entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); conj.add( eq( (String) me.getKey(), me.getValue() ) ); } return conj; } /** * Constrain a collection valued property to be empty */ public static Criterion isEmpty(String propertyName) { return new EmptyExpression(propertyName); } /** * Constrain a collection valued property to be non-empty */ public static Criterion isNotEmpty(String propertyName) { return new NotEmptyExpression(propertyName); } /** * Constrain a collection valued property by size */ public static Criterion sizeEq(String propertyName, int size) { return new SizeExpression(propertyName, size, "="); } /** * Constrain a collection valued property by size */ public static Criterion sizeNe(String propertyName, int size) { return new SizeExpression(propertyName, size, "<>"); } /** * Constrain a collection valued property by size */ public static Criterion sizeGt(String propertyName, int size) { return new SizeExpression(propertyName, size, "<"); } /** * Constrain a collection valued property by size */ public static Criterion sizeLt(String propertyName, int size) { return new SizeExpression(propertyName, size, ">"); } /** * Constrain a collection valued property by size */ public static Criterion sizeGe(String propertyName, int size) { return new SizeExpression(propertyName, size, "<="); } /** * Constrain a collection valued property by size */ public static Criterion sizeLe(String propertyName, int size) { return new SizeExpression(propertyName, size, ">="); } public static NaturalIdentifier naturalId() { return new NaturalIdentifier(); } }
除了构造函数,全都是静态的. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |