Jpql进行基础数据库操作
相关配置文件和(上一篇博文)相同
具体代码:
package cn.itcast.test;
import cn.itcast.domain.Customer;
import cn.itcast.utils.JpaUtils;
import org.junit.Test;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.List;
/**
* @author JiangDong
* @date 2020/7/10 - 9:32
*/
public class JpqlTest {
/**
* 进行jpql查询
* 1.创建query查询对象
* 2.对参数进行赋值
* 3.查询,并得到返回结果
*
* 查询全部
* jpql: from cn.itcast.domain.Customer
* sql: SELECT * FROM cus_customer
*/
@Test
public void testFindAll(){
// 1. 获取EntityManager对象
EntityManager entityManager = JpaUtils.getEntityManager();
// 2. 开启事务
// 3.查询全部
String jpql ="from cn.itcast.domain.Customer";
// 创建Query查询对象,query对象才是执行jpql的对象
Query query = entityManager.createQuery(jpql);
// 发送查询,并封装结果集
List list = query.getResultList();
// 循环打印 结果集
for (Object c:list
) {
System.out.println(c);
}
// 4.提交事务
// 5.释放资源
entityManager.close();
}
/**
* 排序查询 倒序(根据id倒序)
* sql : select * from customer order by cus_id desc
* jpql: from Customer order by custId desc
*/
@Test
public void testOrders(){
// 1. 获取EntityManager对象
EntityManager entityManager = JpaUtils.getEntityManager();
// 2. 开启事务
// 3.查询全部
String jpql ="from cn.itcast.domain.Customer order by custId desc";
// 创建Query查询对象,query对象才是执行jpql的对象
Query query = entityManager.createQuery(jpql);
// 发送查询,并封装结果集
List list = query.getResultList();
// 循环打印 结果集
for (Object c:list
) {
System.out.println(c);
}
// 4.提交事务
// 5.释放资源
entityManager.close();
}
/**
* 使用jpql查询,统计客户总人数
* sql : select count(id) from customer
* jpql : select count(custId) from Customer
*
*/
@Test
public void testCount(){
// 1. 获取EntityManager对象
EntityManager entityManager = JpaUtils.getEntityManager();
// 2. 开启事务
// 3.查询总数
String jpql ="select count(custId) from Customer";
// 创建Query查询对象,query对象才是执行jpql的对象
Query query = entityManager.createQuery(jpql);
// 发送查询,并封装结果集
/**
* 两种接收封装对结果集的方法
* 1. 封装的对象为 多个 时
* List list = query.getResultList();:直接将查询结果封装为list集合
*
* 2. 封装的对象是 单个 时
* Object result = query.getSingleResult();
*/
//List list = query.getResultList();
Object result = query.getSingleResult();
// 循环打印 结果集
System.out.println(result);
// 4.提交事务
// 5.释放资源
entityManager.close();
}
/**
* 分页查询
* sql: select * from cst_customer limit 0,2
* jpql: form Customer
*/
@Test
public void testPaged(){
// 1. 获取EntityManager对象
EntityManager entityManager = JpaUtils.getEntityManager();
// 2. 开启事务
// 3. 查询全部
String jpql ="from cn.itcast.domain.Customer";
// 创建Query查询对象,query对象才是执行jpql的对象
Query query = entityManager.createQuery(jpql);
// 对参数进行赋值 --- 分页参数
// 起始索引
query.setFirstResult(1);
// 每页查询的条数
query.setMaxResults(2);
// 发送查询,并封装结果集
List list = query.getResultList();
// 循环打印 结果集
for (Object c:list
) {
System.out.println(c);
}
// 4.提交事务
// 5.释放资源
entityManager.close();
}
/**
* 条件查询
* 案例:查询客户名称以 “传智播客”开头的 用户
* sql: select * from customer where cust_name like ?;
* jpql: from Customer where custName like ?
*/
@Test
public void testCondition(){
// 1. 获取EntityManager对象
EntityManager entityManager = JpaUtils.getEntityManager();
// 2. 开启事务
// 3. 查询全部
String jpql ="from Customer where custName like ? ";
// 创建Query查询对象,query对象才是执行jpql的对象
Query query = entityManager.createQuery(jpql);
// 对参数进行赋值 --- 占位符参数
// query.setParameter(a,b) 第一个参数:占位符的索引位置(从1开始),第二个参数:取值
query.setParameter(1,"传智播客%");
// 发送查询,并封装结果集
List list = query.getResultList();
// 循环打印 结果集
for (Object c:list
) {
System.out.println(c);
}
// 4.提交事务
// 5.释放资源
entityManager.close();
}
}
还有很多的知识需要学习,仿佛无穷无尽,但又不得不去迎合,这是所有程序员都要面对的事实。