J2EE实验报告6HQL.docx
- 文档编号:3811926
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:12
- 大小:18.27KB
J2EE实验报告6HQL.docx
《J2EE实验报告6HQL.docx》由会员分享,可在线阅读,更多相关《J2EE实验报告6HQL.docx(12页珍藏版)》请在冰豆网上搜索。
J2EE实验报告6HQL
J2EE实验报告
学号
姓名
班级
上课地点
教师
上课时间
实验七熟悉hql检索方式
1.实验目的
1.1.掌握HQL检索方式
2.实验环境
2.1MyEclipse
2.2WindowXP
2.3MySQL
4.教师批改意见
签字:
日期:
成绩
实验内容
1功能描述
1)、掌握HQL检索方式的建立步骤;
2)、掌握HQL两种动态参数绑定方式;
3)、掌握HQL分页检索方式;
4)、掌握动态配置HQL的
5)、掌握HQL投影查询
6)、掌握HQL报表查询
2实验步骤
2.1搭建hibernate框架
(0)新建webproject项目,项目名称自定义(我取名为EX_HQL);
(1)将hibernate需要的jar包拷贝到______下;
2.2创建双向多对一映射
(1)在src下新增包cn.edu.xmut.many2one,在该包下新建类Customer.java和Order.java:
Customer.java
packagecn.edu.xmut.many2one;
publicclassCustomer{
privateintid;
privateStringname;
privateSet
//省略getset方法
}
Order.java
packagecn.edu.xmut.many2one;
publicclassOrder{
privateintid;
privateStringno;
privatedoubleprice;
privateCustomercustomer;
//省略getset方法
//添加一个toString方法
}
(2)创建xxx.hbm.xml文件
Customer.hbm.xml:
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
Order.hbm.xml:
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
(3)创建hibernate.cfg.xml文件
DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http:
//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
--配置session节点-->
--配置连接数据库信息:
userpasswordurldriver_class-->
--配置数据库方言-->
--配置进行数据库操作时,是否需要显示sql语句-->
--配置如何通过反射生成数据表-->
--关联hibernate映射文件-->
(4)编写测试代码
在src下新增包cn.edu.xmut.test,在该包下新建类Many2one.java:
packagecn.edu.xmut.test;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
importcn.edu.xmut.many2one.Customer;
importcn.edu.xmut.many2one.Order;
publicclassMany2one{
publicstaticvoidmain(String[]args){
//1configuration
Configurationcfg=_________;
//2sessionFactory
SessionFactorysf=_________;
//3session
Sessions=_________;
//4Transaction
Transactionts=_________;
//5具体业务--初始化
Customercust=newCustomer();
cust.setName("xmut");
Customercust2=newCustomer();
cust2.setName("yaxon");
Customercust3=newCustomer();
cust3.setName("tinghua");
Orderorder1=newOrder();
order1.setNo("09soft1");
order1.setPrice(91.1);
order1.setCust(cust);
Orderorder2=newOrder();
order2.setNo("09soft2");
order2.setPrice(91.2);
order2.setCust(cust);
Orderorder3=newOrder();
order3.setNo("10soft1");
order3.setPrice(101.1);
order3.setCust(cust2);
Orderorder4=newOrder();
order4.setNo("10soft2");
order4.setPrice(102.1);
order4.setCust(cust2);
Orderorder5=newOrder();
order5.setNo("11soft1");
order5.setPrice(111.1);
order5.setCust(cust3);
Orderorder6=newOrder();
order6.setNo("11soft2");
order6.setPrice(121.1);
order6.setCust(cust3);
session.save(cust);
session.save(cust2);
session.save(cust3);
session.save(order1);
session.save(order2);
session.save(order3);
session.save(order4);
session.save(order5);
session.save(order6);
//6commit
mit();
//7close
s.close();
//8close
sf.close();
}
}
(5)运行测试代码,查看结果。
2.3动态参数绑定-按参数名字绑定
在Many2one.java的main方法中添加如下代码:
Stringhql="FROMOrderoWHEREo.noLIKE_______";
Queryquery=session.createQuery(hql);
List
.list();
for(Orderorder:
orders){
System.out.println(order);
}
运行测试代码,查看结果。
2.4动态参数绑定-按参数位置绑定
在Many2one.java的main方法中添加如下代码:
hql=______________________;
query=session.createQuery(hql);
orders=query.setParameter(0,"%0s%").list();
for(Orderorder:
orders){
System.out.println(order);
}
运行测试代码,查看结果。
2.5动态参数绑定-把参数与一个持久化类绑定
在Many2one.java的main方法中添加如下代码:
hql="FROMOrderoWHERE__________ORDERBYo.noDESC";
query=session.createQuery(hql);
orders=query.setEntity("cust",session.get(_________,1)).list();
for(Orderorder:
orders){
System.out.println(order);
}
运行测试代码,查看结果。
2.6分页搜索
在Many2one.java的main方法中添加如下代码:
intpageNo=2;
intpageSize=3;
intfirstResult=________;
intmaxResults=________;
hql="FROMOrder";
query=session.createQuery(hql);
orders=query.___________(firstResult)
.____________(maxResults)
.list();
for(Orderorder:
orders){
System.out.println(order);
}
运行测试代码,查看结果。
2.7在映射文件中自定义查询语句
(1)修改Order.hbm.xml文件,添加自定义查询语句:
[CDATA[
FROMOrderoWHEREo.noLIKE'%9s%'
]]>
(2)在Many2one.java的main方法中添加如下代码:
query=session.getNamedQuery("______");
orders=query.list();
for(Orderorder:
orders){
System.out.println(order);
}
(3)运行测试代码,查看结果。
2.8投影查询
(1)修改Order.java文件,添加构造方法:
publicOrder(){}
publicOrder(Integerid,doubleprice,Stringno){
this.id=id;
this.price=price;
this.no=no;
}
(2)在Many2one.java的main方法中添加如下代码:
hql=________;
query=session.createQuery(hql);
orders=query.list();
for(Orderorder:
orders){
System.out.println(order);
}
(3)运行测试代码,查看结果。
2.9报表查询-count
在Many2one.java的main方法中添加如下代码:
hql=________;
query=session.createQuery(hql);
longsize=(Long)query.setEntity("cust",session.get(Customer.class,2)).uniqueResult();
System.out.println(size);}
运行测试代码,查看结果。
2.10报表查询-min
在Many2one.java的main方法中添加如下代码:
hql=________;
query=session.createQuery(hql);
doubleminPrice=(Double)query.setEntity("cust",session.get(Customer.class,2)).uniqueResult();
System.out.println(minPrice);
运行测试代码,查看结果。
2.11报表查询-max
在Many2one.java的main方法中添加如下代码:
hql=________;
query=session.createQuery(hql);
doublemaxPrice=(Double)query.setEntity("cust",session.get(Customer.class,2)).uniqueResult();
System.out.println(maxPrice);
运行测试代码,查看结果。
2.12报表查询-avg
在Many2one.java的main方法中添加如下代码:
hql=________;
query=session.createQuery(hql);
doubleavg=(Double)query.setEntity("cust",session.get(Customer.class,2)).uniqueResult();
System.out.println(avg);
运行测试代码,查看结果。
2.13报表查询-sum
在Many2one.java的main方法中添加如下代码:
hql=________;
query=session.createQuery(hql);
doublesum=(Double)query.setEntity("cust",session.get(Customer.class,2)).uniqueResult();
System.out.println(sum);
运行测试代码,查看结果。
3心得体会
不得放空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 实验 报告 HQL
![提示](https://static.bdocx.com/images/bang_tan.gif)