Spring data jpa总结
Posted hequnwang10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring data jpa总结相关的知识,希望对你有一定的参考价值。
jpql介绍。JPQL全称Java Persistence Query Language。
查询步骤:
- 创建query查询对象
- 对参数进行赋值
- 查询,并得到返回结果
jpql查询与SQL查询的语法区别:
查询全部客户数据:
- jqpl:from Customer
- sql:SELECT * FROM cst_customer
测试代码:
@Test
public void testFindAll(){
//1、获取entityManager对象
EntityManager em = JpaUtils.getEntityManager();
//2、开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//3、查询全部
//from cn.itcast.domain.Customer 或者from Customer都可以
String jpql = "from cn.itcast.domain.Customer";
Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
//发送查询,并封装结果集
List list = query.getResultList();
for (Object obj:list) {
System.out.println(obj);
}
//4、提交事务
tx.commit();
//5、释放资源
em.close();
}
排序查询倒叙查询全部客户(根据ID倒叙)
- jqpl:from Customer order by custId desc
- sql:SELECT * FROM cst_customer ORDER BY cust_id DESC
public void testOrders(){
//1、获取entityManager对象
EntityManager em = JpaUtils.getEntityManager();
//2、开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//3、查询全部
//from cn.itcast.domain.Customer 或者from Customer都可以
String jpql = "from Customer order by custId desc";
Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
//发送查询,并封装结果集
List list = query.getResultList();
for (Object obj:list) {
System.out.println(obj);
}
//4、提交事务
tx.commit();
//5、释放资源
em.close();
}
统计客户的总数
- jqpl:select count(custId) from Customer
- sql:SELECT COUNT(cust_id) FROM cst_customer
public void testCount(){
//1、获取entityManager对象
EntityManager em = JpaUtils.getEntityManager();
//2、开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//3、查询全部
//a、使用jpql语句创建query查询对象
String jpql = "select count(custId) from Customer";
Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
//b、对参数赋值
//c、发送查询,并封装结果集
/**
* getResultList : 直接将查询结果封装为list集合
* getSingleResult : 得到唯一的结果集
*/
Object result = query.getSingleResult();
System.out.println(result);
//4、提交事务
tx.commit();
//5、释放资源
em.close();
}
分页查询
- jqpl:from Customer
- sql:select * from cst_customer limit 0,2
public void testPaged(){
//1、获取entityManager对象
EntityManager em = JpaUtils.getEntityManager();
//2、开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//3、查询全部
//a、使用jpql语句创建query查询对象
String jpql = "from Customer";
Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
//b、对参数赋值---分页参数
//起始索引
query.setFirstResult(0);
//每页查询的条数
query.setMaxResults(2);
//c、发送查询,并封装结果集
/**
* getResultList : 直接将查询结果封装为list集合
* getSingleResult : 得到唯一的结果集
*/
List list = query.getResultList();
for (Object obj :
list) {
System.out.println(obj);
}
//4、提交事务
tx.commit();
//5、释放资源
em.close();
}
条件查询
案例:查询客户名称以‘谷歌’开头的客户
- jqpl:from Customer where custName like ?
- sql:SELECT * FROM cst_customer WHERE cust_name LIKE ?
public void testCondition(){
//1、获取entityManager对象
EntityManager em = JpaUtils.getEntityManager();
//2、开启事务
EntityTransaction tx = em.getTransaction();
tx.begin();
//3、查询全部
//a、使用jpql语句创建query查询对象
String jpql = "from Customer where custName like ?";
Query query = em.createQuery(jpql);//创建query查询对象,query对象才是执行jpql的对象
//b、对参数赋值---占位符参数
//第一个参数:占位符的索引位置(从1开始),第二个参数:取值
query.setParameter(1,"谷歌");
//c、发送查询,并封装结果集
/**
* getResultList : 直接将查询结果封装为list集合
* getSingleResult : 得到唯一的结果集
*/
List list = query.getResultList();
for (Object obj :
list) {
System.out.println(obj);
}
//4、提交事务
tx.commit();
//5、释放资源
em.close();
}
以上是关于Spring data jpa总结的主要内容,如果未能解决你的问题,请参考以下文章