Hibernate的findByExample(转)

今天刚用了Hibernate的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
类允许你通过一个给定实例构建一个条件查询。
此实例的属性值将做成查询条件。

Cat cat = new Cat();   
cat.setSex('F');   
cat.setColor(Color.BLACK);   
List results = session.createCriteria(Cat.class)   
  .add( Example.create(cat))   
  .list();

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

Example example = Example.create(cat)   
  .excludeZeroes()       //排除值为0的属性   
  .excludeProperty("color") //排除 color属性   
  .ignoreCase()         //忽略大小写   
  .enableLike();         //启用模糊查询   
List results = session.createCriteria(Cat.class)   
  .add(example)   
  .list(); 

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

List results = session.createCriteria(Cat.class)   
  .add( Example.create(cat) )   
  .createCriteria("mate")   
    .add( Example.create( cat.getMate() ) )   
  .list();  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值