`
hybxiaodao
  • 浏览: 244489 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

hibernate的findByExample

 
阅读更多

用了这么长时间的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. Cat cat =  new  Cat();   
  2. cat.setSex( 'F' );   
  3. cat.setColor(Color.BLACK);   
  4. List results = session.createCriteria(Cat. class )   
  5.   .add( Example.create(cat))   
  6.   .list();  

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

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

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

Java代码
  1. List results = session.createCriteria(Cat. class )   
  2.   .add( Example.create(cat) )   
  3.   .createCriteria( "mate" )   
  4.     .add( Example.create( cat.getMate() ) )   
  5.   .list(); 

分享到:
评论
1 楼 七月_month 2013-12-07  
[color=orange][/color][size=x-small][/size]   [b][/b][i][/i][u][/u]

相关推荐

Global site tag (gtag.js) - Google Analytics