java cirteria,Java Persistence Criteria API【1】

1.Criteria

API

The Java

Persistence Criteria API is used to define dynamic queries through

the construction of object-based query definition objects,rather

than use of the string-based approach of JPQL.

--Java

标准持久化 API 用来构建动态查询(基于对象的查询构建)

2.modes

--type-restricted、non-typed

3.performance maybe not

excellent as named or JPQL queries

--性能表现的差异较其他查询方式

4.CriteriaBuilder (the

main interface into Criteria API)

--generated

by EntityManager or EntityMangerFactory

--how to

create CriteriaQuery objects

----1.createQuery

----2.createQuery(Class)

使用泛型,可以避免类的转换

----3.createTupleQuery()

使用元组对象,而非对象数组

----4.createCriteriaDelete()

批量删除

----5.createCriteriaUpdate()

批量更新

5.having

一个好记的例子是:having allows grouped results to be filtered.

6.使用例子:

--CriteriaBuilder

cb=em.getCriteriaBuilder();

--//查询对象的集合

--CriteriaQuery

cq=cb.CreateQuery();

--Root

e=cq.from(Employee.class);

--cq.where(cb.greaterThan(e.get("salary"),100000));

--Query

query=em.createQuery(cq);

--List

result=query.getResultList();

--//查询单个对象

--CriteriaQuery

cq=cb.createQuery();

--Root

e=cq.form(Employee.class);

--cq.where(cb.equal(e.get("id"),cb.parameter(Long.class,"id")))

--Query

query=em.createQuery(cq);

--query.setParameter("id",id);

--Employee

result2=query.getSingleResult();

--//查询单个数据元素

--CriteriaQuery

cq=cb.createQuery();

--Root

e=cq.from(Employee.class);

--cq.select(cb.max(e.get("salary")));

--Query

query=em.createQuery(cq);

--BigDecimal

result3=(BigDecimal)query.getSingleResult();

--//查询数据元素的集合

--CriteriaQuery

cq=cb.createQuery();

--Root

e=cq.from(Employee.class);

--cq.select(e.get("firstName"));

--Query

query=em.createQuery(cq);

List

result4=query.getResultList();

--//查询元素数组的集合

--CriteriaQuery

cq=cb.createQuery();

--Root

e=cq.from(Employee.class);

--cq.multiselect(e.get("firstName"),e.get("lastName"));

--Query

query=em.createQuery(cq);

--List

result5=query.getResultList();

今天总结到这里,每天一点进步,积累多一点,快乐多一点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值