可以用criteria来做查询,比如要查询某个列表。
先说criteria的几个基本用法,举例
course与property两个对象是一对多,前一后多。
现在需要找寻property中id为2的所有course。
criteria.createAlias("properties","properties")
.add(Restrictions.eq("properties.id",currentPropertyId));
createAlias的用法。
现在查询course中name为某个的时候:
if(!Strings.isNullOrEmpty(name))criteria.add(Restrictions.like("name",name,MatchMode.ANYWHERE));
注意,需要对name进行判断是否为empty或为null。
然后就是MachMode的模糊查询用法。
再对列表进行倒序排序:criteria.addOrder(Order.desc("id"));
这是几个常用的用法。
接着说:用这个的好处就在于好添加条件。
比如现在说了name又说了property,等下又有一个,搞不好要修改service层,dao层的代码。
如果用criteria,就可直接在controller层直接添加。
这样,我们就可以很好的将列表和检索的用一个方法来做就行了。
以前我用错了,是这么回事,总列表,我用一个方法,而条件查询,我又用了一个方法。
这样,两个方法其实是重复了的。