Hibernate4.docx
《Hibernate4.docx》由会员分享,可在线阅读,更多相关《Hibernate4.docx(26页珍藏版)》请在冰豆网上搜索。
Hibernate4
Hibernate讲义(4)
--Struts2与Hibernate综合实例分析
实例名称:
用户信息资料管理
功能分析:
(1)添加用户信息
(2)显示用户信息
(3)修改用户信息
(4)删除用户信息
(5)查询用户信息
实施方法:
分布实施、逐步添加功能;
一、版本1:
userInfoManager0.1
功能:
添加用户信息
设计步骤:
1.设计客户信息表:
tb_userInfoMessage
CREATETABLE[dbo].[tb_userInfoMessage](
[id][int]IDENTITY(1,1)NOTNULL,
[realName][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[workNo][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[departMentName][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[officePhone][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[mobile][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[homePhone][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[qq][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[email][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[address][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[bz][varchar](50)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
2.创建一个Web项目:
userInfoManager
3.添加Struts2特性:
添加struts2中必须的五个包;
修改web.xml配置
4.设计用户信息添加页面:
addUserInfo.jsp
<%@pagelanguage="java"pageEncoding="utf-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
添加客户信息添加客户信息
formaction="userInfoManager!
addUserInfo.action">
textfieldname="userInfo.realName"label="真实姓名"/>
textfieldname="userInfo.workNo"label="工号"/>
textfieldname="userInfo.departMentName"label="部门名称"/>
textfieldname="userInfo.officePhone"label="办公室电话"/>
textfieldname="userInfo.mobile"label="手机"/>
textfieldname="userInfo.homePhone"label="家庭电话"/>
textfieldname="userInfo.qq"label="QQ"/>
textfieldname="userInfo.email"label="邮箱"/>
textfieldname="userInfo.qq"label="家庭地址"/>
textfieldname="userInfo.qq"label="备注"/>
submitvalue="提交"/>
form>
5.创建包
6.添加Hibernate特性
7.Hibernate反向工程
UserInfo.hbm.xml
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
8.创建用户信息管理DAO接口:
userInfoDAO.java
/**
*创建用户信息管理接口
*/
packagecom.my.dao;
importcom.my.bean.UserInfo;
publicinterfaceUserInfoDAO{
//查询用户信息是否存在
publicbooleanisExistUserInfo(UserInfouserInfo);
//保存用户信息
publicvoidaddUserInfo(UserInfouserInfo);
}
9.创建用户管理接口实现类:
UserInfoDAOImpl.java
packagecom.my.dao.impl;
importjava.util.List;
importorg.hibernate.Query;
importorg.hibernate.Session;
importorg.hibernate.Transaction;
importcom.my.bean.UserInfo;
importcom.my.dao.UserInfoDAO;
publicclassUserInfoDAOImplimplementsUserInfoDAO{
//保存用户信息
publicvoidaddUserInfo(UserInfouserInfo){
Sessionsession=HibernateSessionFactory.getSession();
Transactiontx=session.beginTransaction();
session.save(userInfo);
mit();
session.close();
}
//查询用户信息是否存在
publicbooleanisExistUserInfo(UserInfouserInfo){
Sessionsession=HibernateSessionFactory.getSession();
Stringhql="fromUserInfoasuwhereu.realName=?
";
Queryquery=session.createQuery(hql);
query.setParameter(0,userInfo.getRealName());
Listlist=query.list();
if(list!
=null&&list.size()>0){
returntrue;
}else{
returnfalse;
}
}
}
10.控制类设计:
UserInfoControl.java
packagecom.my.control;
importcom.my.bean.UserInfo;
importcom.my.dao.UserInfoDAO;
importcom.my.dao.impl.UserInfoDAOImpl;
importcom.opensymphony.xwork2.Action;
importcom.opensymphony.xwork2.ActionSupport;
publicclassUserInfoControlextendsActionSupport{
privateUserInfouserInfo;
privateintid;
privateUserInfoDAOuserInfoDAO;
publicUserInfogetUserInfo(){
returnuserInfo;
}
publicvoidsetUserInfo(UserInfouserInfo){
this.userInfo=userInfo;
}
publicStringaddUserInfo(){
Stringresult="";
userInfoDAO=newUserInfoDAOImpl();
booleanisExist=userInfoDAO.isExistUserInfo(userInfo);
if(isExist){//已经存在
result="input";
this.addFieldError("realName","该用户已经存在啦");
}else{//不存在
userInfoDAO.addUserInfo(userInfo);
result="success";
}
returnresult;
}
publicStringexecute()throwsException{
//TODOAuto-generatedmethodstub
returnnull;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
}
11.设计添加成功页面:
addSuccess.jsp
<%@pagelanguage="java"pageEncoding="utf-8"%>
添加客户信息成功啦
12.配置struts.xml并测试结果
二、版本2:
userInfoManager0.2
功能:
显示客户信息
设计步骤:
1.在用户信息接口中添加方法:
//获取所有用户信息
publicListgetAllUserInfo();
2.在用户接口实现类中增加方法:
//获取所有用户信息
publicListgetAllUserInfo(){
Listlist=null;
Sessionsession=HibernateSessionFactory.getSession();
Stringhql="fromUserInfo";
Queryquery=session.createQuery(hql);
list=query.list();
returnlist;
}
3.在控制类中增加显示方法:
//显示所有用户信息
publicStringlistAllUserInfo(){
userInfoDAO=newUserInfoDAOImpl();
ListuserList=userInfoDAO.getAllUserInfo();
ActionContextctx=ActionContext.getContext();
Mapsession=ctx.getSession();
session.put("userList",userList);
return"showAllUserInfo";
}
4.创建显示用户信息页面:
showAllUserInfo.jsp
<%@pagelanguage="java"pageEncoding="utf-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
显示用户信息
用户信息显示
序号 | 用户名 | 工号 | 部门名称 | 部门电话 | 手机 |
---|
iteratorvalue="#session.userList"status="user">
propertyvalue="#user.getIndex()+1"/> | propertyvalue="realName"/> | propertyvalue="workNo"/> | propertyvalue="departMentName"/> | propertyvalue="officePhone"/> | propertyvalue="mobile"/> |
iterator>
5.配置struts.xml
/addSuccess.jsp
/showAllUserInfo.jsp
/addUserInfo.jsp
运行结果如下图所示:
三、版本3:
userInfoManager0.3
功能:
删除用户信息
设计步骤:
1.在用户信息接口中增加删除方法:
(UserInfoDAO.java)
//根据id获取用户信息
publicUserInfogetUserInfoById(intid);
//删除用户信息
publicvoiddeleteUserInfo(UserInfouserInfo);
2.在用户信息接口实现类中增加:
(UserInfoDAOImpl.java)
//删除用户信息
publicvoiddeleteUserInfo(UserInfouserInfo){
Sessionsession=HibernateSessionFactory.getSession();
Transactiontx=session.beginTransaction();
session.delete(userInfo);
mit();
session.close();
}
//根据id获取用户信息
publicUserInfogetUserInfoById(intid){
Sessionsession=HibernateSessionFactory.getSession();
UserInfouserInfo=(UserInfo)session.load(UserInfo.class,newInteger(id));
returnuserInfo;
}
4.在用户信息控制端增加删除方法:
//删除用户信息
publicStringdeleteUserInfo(){
Stringresult="";
userInfoDAO=newUserInfoDAOImpl();
UserInfouserInfo=userInfoDAO.getUserInfoById(id);
if(userInfo==null){//该用户不存在
result="error";
}else{//存在该用户
userInfoDAO.deleteUserInfo(userInfo);
result=this.listAllUserInfo();
}
returnresult;
}
四、版本4:
userInfoManager0.4
功能:
修改用户信息
设计步骤:
1.在用户控制类中增加一个预处理修改方法:
//修改用户信息
publicvoidupdateUserInfo(UserInfouserInfo);
2.在接口实现类中增加实现方法:
//修改用户信息
publicvoidupdateUserInfo(UserInfouserInfo){
Sessionsession=HibernateSessionFactory.getSession();
session.clear();
Transactiontx=session.beginTransaction();
session.update(userInfo);
mit();
session.close();
}
3.在用户信息控制类中增加预处理修改和修改方法:
//预处理修改用户信息
publicStringpreUpdateUserInfo(){
Stringresult="";
//根据id获取userInfo对象
userInfoDAO=newUserInfoDAOImpl();
UserInfouserInfo=userInfoDAO.getUserInfoById(id);
if(userInfo==null){//该用户不存在
result="error";
}else{//存在该用户信息
ActionContextctx=ActionContext.getContext();
Mapsession=ctx.getSession();
session.put("userInfo",userInfo);
result="update";
}
returnresult;
}
//修改用户信息
publicStringupdateUserInfo(){
Stringresult="";
System.out.println("id="+id);
userInfo.setId(newInteger(id));
userInfoDAO=newUserInfoDAOImpl();
if(userInfo==null){//用户信息不存在
result="error";
}else{//用户信息存在
userInfoDAO.updateUserInfo(userInfo);
result=this.listAllU