package com.snailteam.reporting.query;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.ParameterExpression;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import com.snailteam.reporting.domain.Product;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.snailteam.reporting.domain.Users;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration( { "/META-INF/spring/applicationContext*" })
@Transactional
/**
*
* @author xiaofancn
*
*/
public class TestJPAQuery {
@PersistenceContext
EntityManager em;
@Test
public void testGetUsers(){
String name="jQuery";
//创建条件构建对象
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
//针对Product实体的条件查询
CriteriaQuery<Product> criteriaQuery = criteriaBuilder.createQuery(Product.class);
//获取实体Product的属性集 Product.id Product.name
Root<Product> productRoot = criteriaQuery.from(Product.class); //HQL
//获取实体属性
Path<String> product_name = productRoot.get("name");
//条件构造
criteriaQuery.where(criteriaBuilder.equal(product_name,name));//HQL
TypedQuery<Product> queryResult = em.createQuery(criteriaQuery);
System.out.println(queryResult.getResultList());
}
@Test
public void testJpaQuery() {// from Users user where user.name like
// '%"+name+"'
// 创建条件查询Builder对象
CriteriaBuilder queryBuilder = em.getCriteriaBuilder();
// 针对Users实体的查询
CriteriaQuery<Users> usersQuery = queryBuilder.createQuery(Users.class);
// 获取实体Users的属性集 Users.id Users.name
Root<Users> userRoot = usersQuery.from(Users.class);
// 条件查询条件List对象
List<Predicate> criteria = new ArrayList<Predicate>();
String name = "xiaofancn";
// 设置查询的属性 select ....
usersQuery.select(userRoot);//
if (name != null && !"".equals(name)) {
// 相当于拼写HQL的Where属性 where a=1 and b=1
ParameterExpression<String> parameters = queryBuilder.parameter(
String.class, "name");
criteria.add(queryBuilder.like(userRoot.<String> get("name"),
parameters));
usersQuery.where(criteria.get(0));// 只有一个查询 条件 like name
}
// 上面构建一个hql空语句,下面填充属性,如果下面没有填充属性,关于属性的查询就不构造
TypedQuery<Users> queryResult = em.createQuery(usersQuery);
if (name != null && !"".equals(name)) {
// 具体的参数和值
queryResult.setParameter("name", name + "%");
}
queryResult.setFirstResult(0);
queryResult.setMaxResults(10);
System.out.println(queryResult.getResultList());
}
@Test
public void testJpaCount() {// from count(*) Users user where user.name like
// '%"+name+"'
CriteriaBuilder queryBuilder = em.getCriteriaBuilder();
CriteriaQuery<Long> usersQuery = queryBuilder.createQuery(Long.class);
Root<Users> userRoot = usersQuery.from(Users.class);
List<Predicate> criteria = new ArrayList<Predicate>();
String name = "1";
usersQuery.select(queryBuilder.count(userRoot));
if (name != null && !"".equals(name)) {
ParameterExpression<String> parameters = queryBuilder.parameter(
String.class, "name");
criteria.add(queryBuilder.like(userRoot.<String> get("name"),
parameters));
usersQuery.where(criteria.get(0));
}
TypedQuery<Long> queryResult = em.createQuery(usersQuery);
if (name != null && !"".equals(name)) {
queryResult.setParameter("name", name + "%");
}
System.out.println(queryResult.getSingleResult());
}
@Test
public void testJpaIn() {
String sql = "from Resources r where r.id in :array";
List<Long> list = new ArrayList<Long>();
list.add(1l);
System.out.println(em.createQuery(sql).setParameter("array", list)
.getResultList());
}
}
http://download.oracle.com/javaee/6/tutorial/doc/gjivm.html
分享到:
相关推荐
客户关系管理演示这是一个简单的展示,展示了如何使用 Angular.js 和 Java EE 6(JAX-RS 和 JPA 2.0)构建 Web 应用程序。 要部署,只需将 war 复制到 Jboss AS 7.1 的“standalone/deployments”目录。 您还可以...
MyEclipse 10 使用高级桌面和Web开发技术,包括 HTML5 和 Java EE 6,支持 JPA 2.0、JSF 2.0 、Eclipselink 2.1 以及 OpenJPA 2.0. 而对 IBM WebSphere 用户来说,MyEclipse Blue 支持最新版本的 WebSphere Portal ...
jboss-javaee6-webapp:各种技术,包括... 它演示了如何使用JSF 2.1,CDI 1.0,JAX-RS,EJB 3.1,JPA 2.0和Bean Validation 1.0创建兼容的Java EE 6应用程序。 它还包括一个持久性单元以及一些示例性持久性和事务代码,
此项目设置为允许您使用 JSF 2.0、CDI 1.0、EJB 3.1、JPA 2.0 和 Bean Validation 1.0 创建兼容的 Java EE 6 应用程序。 它包括一个持久性单元和一些示例持久性和事务代码,向您介绍企业 Java 中的数据库访问。 中...
He is the author of a Java EE 5 book in France and is also an Expert Member on Java EE 6, EJB 3.1, and JPA 2.0. He is the cofounder of the Paris Java User Group. For more, visit ...
JPA 2.0 EclipseLink JPA 2.5.0 ÿ JMS 3.0 ActiveMQ 5.7.0 ñ JMS 3.0 GlassFish 3.1.2 /打开MQ 5 ÿ JAX-WS 2.2 地铁jaxws-ri-2.2.8 ÿ JSF 2.1 GlassFish 3.1.2 / Mojarra 2.1 ÿ 工具 ddbb:...
Apache OpenJPA是Apache软件基金会的Java持久性项目,可以... 2.x发行版是JSR-317 Java Persistence 2.0规范的生产就绪型兼容实现,该组件向后兼容JPA 1.0规范,并通过了Sun JPA 2.0 Technology Compatibility Kit。...
第11章 JPA的查询支持 456 11.1 查询API 457 11.1.1 面向对象的JPQL 457 11.1.2 查询API简介 457 11.2 执行查询 459 11.2.1 使用Query创建查询 459 11.2.2 设置查询参数 459 11.2.3 取得查询结果 460 11.3 JPQL语法 ...
此存储库的内容已根据Apache License 2.0 许可 更多信息 可以在openjpa-project子目录中找到以下文件: openjpa-project / BUILDING.txt openjpa-project / CHANGES.txt openjpa-project / RELEASE-NOTES.html ...
Univers 2.0 JavaEE,Vaadin框架,Spring,Spring Security,Spring Boot,Maven,JPA,JBoss-WildFly
集合了Spring3.1 + Struts2.3 + Hibernate4.1 + JPA2.0 + FreeMarker + MySQL 等技术。 开发环境 : eclipse-jee-Juno-Release-win32 JDK 1.6 Apache tomcat 6.0 MySQL 5.5 系统依赖的其它jar包版本可以在lib目录里...
开始Java EE 7 书的结构 第1节-简介 第1章-Java EE 7环境 第2节-相互关注 第2章-上下文和依赖... Chapter02:JPA 2.0简介 Chapter03:JPA映射 Chapter04:JPA实体管理器和JPQL Chapter05:JPA生命周期和侦听器 第06
宠物目录样本这是一个完整的 JEE6 示例,包含 JSF2.0、EJB3.1 和 JPA2.0。 此示例使用 Stackato 旧版构建包中的 JavaEE 框架。数据库配置因为我们已经在 manifest.yml 文件中指定了一个framework标签,所以 Stackato...
6、CSS...................205 JavaScript...................206 一、JS概述............206 二、JS的基础语法208 三、JS常用内置对象(11种)............209 四、DHTML(动态HTML对象)......210 五、JavaScirpt高级...
EE博客系统源码javaee8-jaxrs-sample(WIP) 我已经创建来演示如何使用 Java EE 7 和 JAX-RS 2.0 构建 RESTful API。 在这个示例中,我将使用最新的 Java EE 8 重写它。我将使用 Glassfish v5 作为目标运行时,因为...