admin 管理员组

文章数量: 1086019


2024年3月28日发(作者:动易政府网站模板)

detachedcriteria用法

DetachedCriteria是Hibernate框架提供的一种高级查询实现方

式,在实际工作中也是使用较为广泛的一种查询方式。本文将结合例

子,分步骤阐述DetachedCriteria的用法。

第一步:创建DetachedCriteria对象

DetachedCriteria是Criteria的一个新的且独立的实例,因此

需要通过ss()方法创建它。比如我们要查询

某个表中id值为1的记录,可以这样写:

DetachedCriteria criteria =

ss();

第二步:添加查询条件

DetachedCriteria是动态添加查询条件的,可以通过调用add()

方法添加查询条件,该方法接收一个Criterion参数,Criterion是

Hibernate提供的查询条件接口。比如我们要查询id等于1的记录,

可以这样写:

(("id", 1));

这里的()方法表示等于,第一个参数表示属性

名,第二个参数表示属性值。

第三步:设置投影(Projection)和关联查询(Join)

投影是用来选择要查询的属性的,可以使用Projections来实现。

比如我们要查询id和name两个属性,可以这样写:

jection(tionList()

.add(ty("id"))

.add(ty("name")));

这里的ty()方法表示要查询的属性名。而如

果要进行关联查询,可以使用createAlias()方法创建关联,并用别名

代替原本的属性名。比如我们要查询用户表和角色表的数据,可以这

样写:

Alias("role", "r")

.add(("me", "管理员"));

这里的createAlias()方法中,第一个参数表示要关联的属性名,

第二个参数表示用什么别名代替它。

第四步:执行查询

执行查询有两种方式:使用HibernateTemplate的

findByCriteria()方法和使用Hibernate的Query对象的

DetachedCriteria查询。

下面是使用HibernateTemplate的findByCriteria()方法查询:

List userList = (List)

Criteria(criteria);

使用Hibernate的Query对象的DetachedCriteria查询:

Session session = ssion();

Criteria executableCriteria =

cutableCriteria(session);

List userList = (List)

();

需要注意的是,在使用完DetachedCriteria对象后,一定要将

其还原,否则会影响后面的查询。可以使用()方法还

原。

最后,完整的示例代码如下:

DetachedCriteria criteria =

ss()

.add(("id", 1))

.createAlias("role", "r")

.add(("me", "管理员"))

.setProjection(tionList()

.add(ty("id"))

.add(ty("name")));

List userList = (List)

Criteria(criteria);

// 或

Session session = ssion();

Criteria executableCriteria =

cutableCriteria(session);

List userList = (List)

();

();

以上就是DetachedCriteria的用法,希望能对您有所帮助。


本文标签: 查询 方法 表示 使用 属性