`

hibernate findbyexample findbycriteria

 
阅读更多

用了这么长时间的hibernate/spring,如果不是今天用的findByExample方法到现在还不知道findByExample的机制。惭愧

Class User{
String username;
String password = "默认口令";
Company company;
getter()&setter().....
}

Company company = companyDao.getById("id");
User user = new User();
user.setSid("主键");
uer.setUsername("user");
use.setCompany(company);
userDao.findByExample(user);

这个时候的SQL条件为:

select * from user
where username = ?
and password = ?



findByExample()使用时得出结论:
1.不支持主键
2.不支持关联
3.不支持NULL




查询示例
org.hibernate.criterion.Example
类允许你通过一个给定实例构建一个条件查询。
此实例的属性值将做成查询条件。

Java代码
  1. Catcat=newCat();
  2. cat.setSex('F');
  3. cat.setColor(Color.BLACK);
  4. Listresults=session.createCriteria(Cat.class)
  5. .add(Example.create(cat))
  6. .list();

Example.create(cat) 表示根据cat这个对象来构造一个查询条件。
上面这条语句将查询sex 为 F 而且Color为BLACK的所有Cat记录。
版本属性、标识符和关联被忽略。默认情况下值为null的属性将被排除。
可以自行调整Example使之更实用。

Java代码
  1. Exampleexample=Example.create(cat)
  2. .excludeZeroes()//排除值为0的属性
  3. .excludeProperty("color")//排除color属性
  4. .ignoreCase()//忽略大小写
  5. .enableLike();//启用模糊查询
  6. Listresults=session.createCriteria(Cat.class)
  7. .add(example)
  8. .list();

甚至可以使用examples在关联对象上放置条件。

Java代码
  1. Listresults=session.createCriteria(Cat.class)
  2. .add(Example.create(cat))
  3. .createCriteria("mate")
  4. .add(Example.create(cat.getMate()))
  5. .list();
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics