用了这么长时间的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代码
-
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使之更实用。
Java代码
-
Example example = Example.create(cat)
-
.excludeZeroes()
//排除值为0的属性
-
.excludeProperty(
"color"
)
//排除 color属性
-
.ignoreCase()
//忽略大小写
-
.enableLike();
//启用模糊查询
-
List results = session.createCriteria(Cat.
class
)
-
.add(example)
-
.list();
甚至可以使用examples在关联对象上放置条件。
Java代码
-
List results = session.createCriteria(Cat.
class
)
-
.add( Example.create(cat) )
-
.createCriteria(
"mate"
)
-
.add( Example.create( cat.getMate() ) )
-
.list();
分享到:
相关推荐
`List<T> findByExample(T example)`,根据示例对象匹配数据;以及`List<T> findByNamedQuery(String namedQuery, Map, Object> params)`,使用预定义的命名查询。 3. **分页查询**:在大型项目中,通常需要实现...
Hibernate 模板方法是 Hibernate 框架中用于简化数据访问操作的重要工具,它提供了一系列预定义的方法,方便开发者在实际的软件开发中执行常见的数据库查询和操作。这些方法主要集中在 `HibernateTemplate` 类中,...
### Spring与Hibernate集成知识点详解 #### 一、Spring与Hibernate集成概述 在现代软件开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力成为Java领域最受欢迎的企业级应用开发框架之一。而...
例如`public List<T> findByExample(T exampleEntity)`,可以基于一个实例对象的属性来构建查询条件。 3. **分页查询**:为了提高性能,通常需要进行分页查询。工具类可以提供如`public Page<T> findPage(Class<T> ...
- `findByExample(entity)`: 基于实例属性的查询,`Session`的`createCriteria()`可以接受对象实例,根据其属性构建查询条件。 - `findByCriteria(Criteria criteria)`: 使用`Criteria API`自定义复杂查询,可以...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层SQL语句。在本文中,我们将深入探讨Hibernate中的一些基本查询方法,这对于初学者...
在Java的Web开发中,Spring和Hibernate是两个非常重要的框架,它们分别负责IoC(Inversion of Control,控制反转)和ORM(Object-Relational Mapping,对象关系映射)。Spring框架提供了一个强大的容器来管理对象的...
### Hibernate 模板类详解 在Java开发领域中,Hibernate框架是进行对象关系映射(Object-Relational Mapping,简称ORM)的一种常用工具,它能够将面向对象模型的数据与关系型数据库之间的数据进行转换,从而简化了...
3. **查询接口**:提供基于HQL(Hibernate Query Language)或SQL的查询方法,如`findByExample()`, `findByName()`, `findAll()`。 4. **分页查询**:支持`listByPage(int start, int pageSize)`,便于数据量大的...
Hibernate HQL,全称为Hibernate Query Language,是Hibernate框架中用于操作对象关系映射(ORM)的查询语言。它类似于SQL,但设计目的是针对Java对象,而不是数据库表。HQL允许开发者以面向对象的方式编写查询,...
findByExample(Object exampleEntity);findByExample(Object exampleEntity, int firstResult, int maxResults);findByNamedParam(String queryString , String paramName , Object value);findByNamedParam...
**HibernateTemplate** 是 Spring 框架中用于简化 Hibernate 使用的一个工具类。它通过 AOP(面向切面编程)的思想,封装了大量的 CRUD(创建、读取、更新、删除)操作,使得开发者能够更加专注于业务逻辑的实现,而...
Spring框架进一步封装了Hibernate,提供了`getHibernateTemplate()`方法,使得在Spring环境中使用Hibernate变得更加便捷。本文将详细介绍`getHibernateTemplate()`的使用方法,并通过具体的代码示例帮助读者更好地...
此外,还有如`findByExample()`这样的方法,根据实体对象的属性进行查询。 5. **回调机制**:当`getHibernateTemplate()`的标准方法无法满足特定需求时,可以使用`HibernateCallback`接口进行自定义操作。这允许你...
HQL(Hibernate Query Language)是Hibernate框架提供的一种查询语言,它基于SQL标准,但更加强调面向对象的特点。在实际应用开发中,HQL被广泛用于数据检索、更新等操作。下面将详细介绍HQL语言中的一些常用的方法...
public List findByExample(Users instance) { log.debug("finding Users instance by example"); try { List results = ...; // 这里省略了具体的查询逻辑 return results; } catch (RuntimeException re) { ...
在学习Spring框架与Hibernate集成的过程中,掌握HQL(Hibernate Query Language)的使用方法是十分重要的。本文档将详细介绍如何在Spring环境中运用HQL进行数据查询操作,包括基本查询、参数绑定以及命名查询等高级...
9. **查询方法命名**: Spring Data JPA支持根据方法名生成SQL查询,例如,`findAll()`对应`SELECT * FROM TABLE`,`findByExample()`则会根据参数创建对应的WHERE子句。 10. **自定义查询**: 如果标准的命名查询...