1.练习题

1.查询所有商品的名称【查询特定属性】(只有一个参数的话可以使用List<String>接收数据)
2.查询所有商品的名称和供应商【查询特定属性】(多个参数可以使用List<Object[]>接收数据)

3.查询所有商品的名称和供应商【查询特定属性】(多个参数可以使用List<Object[]>接收数据)

使用这种方式我们需要提供相应的构造方法

4.查询出所有商品信息,按照成本价排序【查询排序】
5.查询出所有产品信息,按照分类编号排序【使用关联对象属性排序】
6.查询无线鼠标和游戏鼠标商品信息【使用IN】 使用占位符
7.查询无线鼠标和游戏鼠标商品信息【使用IN】 使用命名参数

注意:...in :dirNames冒号后面不能有空格
8.查询出成本价在30到100的所有商品【使用BETWEEN..AND..】
9.查询出产品名称中包括G9或M3的商品【使用LIKE】
10.查询出商品的分类【distinct】
11.查询出有商品的分类【size】//必须配置双向一对多:商品和分类
12.查询出分类信息,按照分类的产品数数排序【使用函数排序】
13.查询出没有产品的分类【对集合使用size】
14.查询出所有产品及分类名称【JOIN/LEFT JOIN】
15.查询出各个分类商品的平均成本价和最高价格【使用聚集函数】avg() max()

聚集函数/GROUP/HAVIN
17.查询出各个分类拥有的产品种类数(使用聚合)
18.查询出大于平均成本价的商品信息  [子查询]
19.查询出没有成本价的商品
20.查询出没有成本价的商品  原生SQL查询
21.查询出所有商品并分页

从哪里开始取数据,索引从0开始 int firstResult = (currentPage - 1) * pageSize;
 取多少条int maxResults = pageSize;
22.查询出所有商品总条数   Long countLong = (Long) query.uniqueResult()

2.代码实现

  2.1配置

    a.数据库表结构

    

    b.java模型

    

    

    c.映射文件

    

    d.工具类

    

  2.2.代码实现

 import com.hibernate.crud.model.DemoTest;
import com.hibernate.crud.model.Product;
import com.hibernate.crud.model.ProductDir;
import com.hibernate.crud.utils.HibernateUtils;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.junit.Test; import java.util.ArrayList;
import java.util.List; /**
* Created by asus on 2017/6/6.
*/
public class HqlTest {
@Test
public void testQuery22() {
Session session = HibernateUtils.getSession();
//22.查询出所有商品总条数 Long countLong = (Long) query.uniqueResult() String sql="select count(p.id) from com.hibernate.crud.model.Product p ";
Query query = session.createQuery(sql);
Long countLong = (Long) query.uniqueResult();
System.out.println("countLong:"+countLong);
session.close();
}
@Test
public void testQuery21() {
Session session = HibernateUtils.getSession();
//21.查询出所有商品并分页
//从哪里开始取数据,索引从0开始 int firstResult = (currentPage - 1) * pageSize;
// 取多少条int maxResults = pageSize;
String sql="select p from com.hibernate.crud.model.Product p ";
Query query = session.createQuery(sql);
query.setFirstResult(6);
query.setMaxResults(5);
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品名称:"+s.getProductName()+"分类名称:"+s.getCostPrice());
}
session.close();
} @Test
public void testQuery20() {
Session session = HibernateUtils.getSession();
//20.查询出没有成本价的商品 原生SQL查询
String sql="select * from product p where p.costPrice is null ";
SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.addEntity(Product.class);
List<Product> list=sqlQuery.list();
for (Product s : list) {
System.out.println("商品名称:"+s.getProductName()+"分类名称:"+s.getCostPrice());
}
session.close();
}
@Test
public void testQuery19() {
Session session = HibernateUtils.getSession();
//19.查询出没有成本价的商品
String hql="select p from com.hibernate.crud.model.Product p where p.costPrice is null ";
Query query = session.createQuery(hql);
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品名称:"+s.getProductName()+"分类名称:"+s.getCostPrice());
}
session.close();
}
@Test
public void testQuery18() {
Session session = HibernateUtils.getSession();
//18.查询出大于平均成本价的商品信息 [子查询]
String hql="select p from com.hibernate.crud.model.Product p where p.costPrice >(select avg(p2.costPrice) from com.hibernate.crud.model.Product p2) ";
Query query = session.createQuery(hql);
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品名称:"+s.getProductName()+"分类名称:"+s.getCostPrice());
}
session.close();
}
@Test
public void testQuery17() {
Session session = HibernateUtils.getSession();
//17.查询出各个分类拥有的产品种类数(使用聚合)
String hql="select pd.dirName,count(p.id) from com.hibernate.crud.model.Product p left join p.dir pd group by pd.id ";
Query query = session.createQuery(hql);
List<Object[]> list=query.list();
for (Object[] s : list) {
System.out.println("商品名称:"+s[0]+"分类名称:"+s[1]);
}
session.close();
}
/* @Test
public void testQuery16() {
Session session = HibernateUtils.getSession();
//16.查询出各个分类商品的平均成本价和最高价格【使用聚集函数】avg() max()
//聚集函数/GROUP
String hql="select pd.dirName,avg(p.costPrice),max(p.costPrice) from com.hibernate.crud.model.Product p left join p.dir pd group by pd.id ";
Query query = session.createQuery(hql);
List<Object[]> list=query.list();
for (Object[] s : list) {
System.out.println("商品名称:"+s[0]+"分类名称:"+s[1]+" ----"+s[2]);
}
session.close();
}*/
@Test
public void testQuery15() {
Session session = HibernateUtils.getSession();
//15.查询出各个分类商品的平均成本价和最高价格【使用聚集函数】avg() max()
//聚集函数/GROUP/HAVIN
String hql="select pd.dirName,avg(p.costPrice),max(p.costPrice) from com.hibernate.crud.model.Product p left join p.dir pd group by pd.id ";
Query query = session.createQuery(hql);
List<Object[]> list=query.list();
for (Object[] s : list) {
System.out.println("商品名称:"+s[0]+"分类名称:"+s[1]+" ----"+s[2]);
}
session.close();
}
@Test
public void testQuery14() {
/**
* 注意:hibernate中的JOIN和LEFT JOIN(使用SQL/HQL对比)
Hql 要求1:不写on语句
Hql 要求2:join后面的写的内容是前面.出实体对象的别名来
*/
Session session = HibernateUtils.getSession();
//14.查询出所有产品及分类名称【JOIN/LEFT JOIN】
String hql="select p.productName,pd.dirName from com.hibernate.crud.model.Product p left join p.dir pd ";
Query query = session.createQuery(hql);
List<Object[]> list=query.list();
for (Object[] s : list) {
System.out.println("商品名称:"+s[0]+"分类名称:"+s[1]);
}
session.close();
}
@Test
public void testQuery13() {
Session session = HibernateUtils.getSession();
//13.查询出没有产品的分类【对集合使用size】
String hql="select obj from com.hibernate.crud.model.ProductDir obj where obj.products.size=0 ";
Query query = session.createQuery(hql);
List<ProductDir> list=query.list();
for (ProductDir s : list) {
System.out.println("分类名称:"+s.getDirName()+" id:"+s.getId());
}
session.close();
}
@Test
public void testQuery12() {
Session session = HibernateUtils.getSession();
//12.查询出分类信息,按照分类的产品数数排序【使用函数排序】
String hql="select obj from com.hibernate.crud.model.ProductDir obj order by obj.products.size desc ";
Query query = session.createQuery(hql);
List<ProductDir> list=query.list();
for (ProductDir s : list) {
System.out.println("分类名称:"+s.getDirName()+" id:"+s.getId());
}
session.close();
}
@Test
public void testQuery11() {
Session session = HibernateUtils.getSession();
//11.查询出有商品的分类【size】//必须配置双向一对多:商品和分类
String hql="select obj from com.hibernate.crud.model.ProductDir obj where obj.products.size>0 ";
Query query = session.createQuery(hql);
List<ProductDir> list=query.list();
for (ProductDir s : list) {
System.out.println("分类名称:"+s.getDirName()+" id:"+s.getId());
}
session.close();
}
@Test
public void testQuery10() {
Session session = HibernateUtils.getSession();
//10.查询出商品的分类【distinct】
String hql="select distinct obj.dir from com.hibernate.crud.model.Product obj";
Query query = session.createQuery(hql);
List<ProductDir> list=query.list();
for (ProductDir s : list) {
System.out.println("分类名称:"+s.getDirName()+" id:"+s.getId());
}
session.close();
}
@Test
public void testQuery9() {
Session session = HibernateUtils.getSession();
//9.查询出产品名称中包括G9或M3的商品【使用LIKE】
// String hql="select obj from com.hibernate.crud.model.Product obj where obj.productName like '%G9%' or obj.productName like '%M3%'";
String p1="G9";
String p2="M3";
String hql="select obj from com.hibernate.crud.model.Product obj where obj.productName like '%"+p1+"%' or obj.productName like '%M3%' ";
Query query = session.createQuery(hql);
List<Product> list=query.list();
// query.setString("pam","%G9%");
// query.setString("pan","%M3%");
for (Product s : list) {
System.out.println("商品的名称位:"+s.getProductName()+" 供应商位:"+s.getSupplier()+" 成本价:"+s.getCostPrice());
}
session.close();
}
@Test
public void testQuery8() {
Session session = HibernateUtils.getSession();
//8.查询出成本价在30到100的所有商品【使用BETWEEN..AND..】
String hql="select obj from com.hibernate.crud.model.Product obj where obj.costPrice between ? and ?";
Query query = session.createQuery(hql);
query.setParameter(0,"30");
query.setParameter(1,"100");
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品的名称位:"+s.getProductName()+" 供应商位:"+s.getSupplier()+" 成本价:"+s.getCostPrice());
}
session.close();
}
@Test
public void testQuery7() {
Session session = HibernateUtils.getSession();
//6.查询无线鼠标和游戏鼠标商品信息【使用IN】 使用命名参数
//注意:...in :dirNames冒号后面不能有空格
String hql="select obj from com.hibernate.crud.model.Product obj where obj.dir.dirName in :dirNames";
Query query = session.createQuery(hql);
String[] param={"无线鼠标","游戏鼠标"};
query.setParameterList("dirNames",param);
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品的名称位:"+s.getProductName()+" 供应商位:"+s.getSupplier()+" 鼠标名称:"+s.getDir().getDirName());
}
session.close();
}
@Test
public void testQuery6() {
Session session = HibernateUtils.getSession();
//6.查询无线鼠标和游戏鼠标商品信息【使用IN】 使用占位符
String hql="select obj from com.hibernate.crud.model.Product obj where obj.dir.dirName in (?,?)";
Query query = session.createQuery(hql);
query.setString(0,"无线鼠标");
query.setString(1,"游戏鼠标");
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品的名称位:"+s.getProductName()+" 供应商位:"+s.getSupplier()+" 鼠标名称:"+s.getDir().getDirName());
}
session.close();
}
@Test
public void testQuery5() {
Session session = HibernateUtils.getSession();
//5.查询出所有产品信息,按照产品编号排序【使用关联对象属性排序】
String hql="select obj from com.hibernate.crud.model.Product obj order by obj.dir.id desc ";
Query query = session.createQuery(hql);
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品的名称位:"+s.getProductName()+" 供应商位:"+s.getSupplier()+" id:"+s.getDir().getId());
}
session.close();
} @Test
public void testQuery4() {
Session session = HibernateUtils.getSession();
//4.查询出所有商品信息,按照成本价排序【查询排序】
String hql="select obj from com.hibernate.crud.model.Product obj order by obj.costPrice desc ";
Query query = session.createQuery(hql);
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品的名称位:"+s.getProductName()+" 供应商位:"+s.getSupplier()+" 成本价:"+s.getCostPrice());
}
session.close();
}
@Test
public void testQuery3() {
Session session = HibernateUtils.getSession();
// 3.查询所有商品的名称和供应商【查询特定属性】(多个参数可以使用List<Object[]>接收数据)
// 注:使用这种方式我们需要提供相应的构造方法
String hql="select new Product(obj.productName, obj.supplier) from com.hibernate.crud.model.Product obj";
Query query = session.createQuery(hql);
List<Product> list=query.list();
for (Product s : list) {
System.out.println("商品的名称位:"+s.getProductName()+" 供应商位:"+s.getSupplier());
}
session.close();
}
@Test
public void testQuery2() {
Session session = HibernateUtils.getSession();
// 2.查询所有商品的名称和供应商【查询特定属性】(多个参数可以使用List<Object[]>接收数据)
String hql="select obj.productName, obj.supplier from com.hibernate.crud.model.Product obj";
Query query = session.createQuery(hql);
List<Object[]> list=query.list();
for (Object[] s : list) {
System.out.println("商品的名称位:"+s[0]+" 供应商位:"+s[1]);
}
session.close();
}
@Test
public void testQuery1() {
Session session = HibernateUtils.getSession();
// 1.查询所有商品的名称【查询特定属性】(只有一个参数的话可以使用List<String>接收数据)
String hql="select obj.productName from com.hibernate.crud.model.Product obj";
Query query = session.createQuery(hql);
List<String> list=query.list();
for (String s : list) {
System.out.println("s:"+s);
}
session.close();
} }

最新文章

  1. 每个程序员都会的 35 个 jQuery 小技巧
  2. nodejs http 请求延时的处理方法(防止程序崩溃)
  3. 五、Java基础---------if else、switch总结
  4. hdu 3549 Flow Problem
  5. 【转载】Windows/Office“神key的来源”(附win8神key)
  6. ISA2006 下建立VPN连接时出现“错误800”时的解决办法
  7. windows 下解决 Time_Wait 和 CLOSE_WAIT 方法
  8. Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project taotao-manager-web: Failed to clean project: Failed to delete \target\tomcat\logs\access_log.201
  9. Sass函数--颜色函数--HSL函数
  10. IE8下载按钮失效
  11. 【一通百通】c/php的printf用法
  12. 【java】网络socket编程简单示例
  13. python实现列表倒叙打印
  14. 二、Windows 下 ShellCode 编写初步
  15. Apache访问控制
  16. 网口扫盲二:Mac与Phy组成原理的简单分析
  17. BZOJ1004 HNOI2008Cards(Burnside引理+动态规划)
  18. 【noip模拟赛1】古韵之乞巧 (dp)
  19. 【Struts2】如何查看Struts2框架的源码
  20. 量子猴排(Quantum Bogo sort)

热门文章

  1. webkitAnimationEnd动画事件
  2. python库myqr生成二维码
  3. alias with parameter,linux
  4. OraOLEDB.Oracle找不到驱动问题
  5. Java课程作业之动手动脑(二)
  6. Docker的安装和启动
  7. python二进制转换
  8. &#39;git status&#39;不显示untracked files
  9. python学习笔记_week16
  10. aptana studio 使用技巧整理