一.概述
jpql语法跟hql语法类似。
二.查询所有
1.代码块
/*
查询全部
jpql查询语句跟sql语句相似
jsql(hql):from pojo.Customer实体类对象
sql:select * from customer库名
*/
@Test
public void test01(){
//1.获取entityManager对象
EntityManager entityManager = JPAUtil.getEntityManager();
//2.开启事务
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//3.查询全部
String jpql = "from pojo.Customer";
Query query = entityManager.createQuery(jpql);//获取query对象
List resultList = query.getResultList();//执行语句
for (Object obj : resultList){
System.out.println(obj);
}
//4.事务提交
transaction.commit();
//5.关闭资源
entityManager.close();
}
2.范例
三.排序查询
1.代码块
/*
排序查询:倒序排序
sql语句:select * from cst_customer order by cust_id
hql语句:from pojo.Customer order by custId desc
*/
@Test
public void test02(){
//1.获取entityManager对象
EntityManager entityManager = JPAUtil.getEntityManager();
//2.开启事务
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//3.查询全部
//字符串的语句中是实体类的全限定类名和属性
String jpql = "from pojo.Customer order by custId desc";
Query query = entityManager.createQuery(jpql);//获取query对象
List resultList = query.getResultList();//执行语句
for (Object obj : resultList){
System.out.println(obj);
}
//4.事务提交
transaction.commit();
//5.关闭资源
entityManager.close();
}
2.范例
四.统计查询
1.代码块
/*
统计查询
sql语句:select count(cust_id) from cst_customer
hql语句:select count(custId) from pojo.Customer
*/
@Test
public void test03(){
//1.获取entityManager对象
EntityManager entityManager = JPAUtil.getEntityManager();
//2.开启事务
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//3.查询全部
//字符串的语句中是实体类的全限定类名和属性
String jpql = "select count(custId) from pojo.Customer";
Query query = entityManager.createQuery(jpql);//获取query对象
//结果集多个记录使用getResultList(),结果集是一条数据使用getSingleResult()
Object singleResult = query.getSingleResult();
System.out.println("singleResult是唯一的结果集:" + singleResult);
//4.事务提交
transaction.commit();
//5.关闭资源
entityManager.close();
}
2.范例
五.分页查询
1.代码块
/*
分页查询
sql语句:select * from cst_customer limit ?,?
hql语句:from pojo.Customer
*/
@Test
public void test04(){
//1.获取entityManager对象
EntityManager entityManager = JPAUtil.getEntityManager();
//2.开启事务
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//3.查询全部
//字符串的语句中是实体类的全限定类名和属性
String jpql = "from pojo.Customer";
Query query = entityManager.createQuery(jpql);//获取query对象
//进行分页设置
query.setFirstResult(0);//开始查询的起始点
query.setMaxResults(2);//每页显示的条数
List list = query.getResultList();
for (Object obj : list){
System.out.println(obj);
}
//4.事务提交
transaction.commit();
//5.关闭资源
entityManager.close();
}
2.范例
六.条件查询
1.代码块
/*
条件查询:根据姓名查询记录
sql语句:select * from cst_customer where cust_name like ?
hql语句:from pojo.Customer where custName like ?
*/
@Test
public void test05(){
//1.获取entityManager对象
EntityManager entityManager = JPAUtil.getEntityManager();
//2.开启事务
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//3.查询全部
//字符串的语句中是实体类的全限定类名和属性
String jpql = "from pojo.Customer where custName like ?";
Query query = entityManager.createQuery(jpql);//获取query对象
//占位符赋值
//1.参数一:占位符的位置,参数二:占位符赋值
query.setParameter(1,"%李%");
List list = query.getResultList();
for (Object obj : list){
System.out.println(obj);
}
//4.事务提交
transaction.commit();
//5.关闭资源
entityManager.close();
}