struts hibernate的增删改查magiczhou超详细.docx
《struts hibernate的增删改查magiczhou超详细.docx》由会员分享,可在线阅读,更多相关《struts hibernate的增删改查magiczhou超详细.docx(29页珍藏版)》请在冰豆网上搜索。
strutshibernate的增删改查magiczhou超详细
Struts2+hibernate3简单使用
由于是用MyEclipse自动生成hibernate的一些信息,所以要先进行数据库的设计
数据库名称为——hibernate_test
这里演示只用了一个表
Userinfo
表的结构如图
这里是使用Mysql的数据库大家可以自己创建
(由于在这里是使用MyEclipse来自动加入hibernate的支持,数据库要先建立好(可能实际开发中,都是手工加入hibernate框架,数据库都是由hibernate自己生成,不用自己去创建,就要写好相关的javaBean,这里不多说……))
我这里使用的Myeclipse8.6
∙首先在myeclipse中创建好一个“数据库连接信息”(不知道这样的说法正不争取,看图)(如何打开DBBrowser---window----showview---DBBrowser右键)
然后弹出一个信息框,填写相关信息,如下
Finish之后,双击打开刚刚创建的数据库连接
大家就可以看到数据库里面的信息了
返回界面,创建一个web项目如图:
先加入hibernate的支持。
看图(是hibernate的那个)
弹出信息框,
继续Next,保持这一步的默认就好,继续next,可以看到这个界面
然后下面的信息会自动填补上去的,继续Next,看到如下图
这个是hibernate的sessionFactory
然后就可以Finish了。
是不是步骤挺多的。
我在这写文章更烦~~
现在下图显示内容没有什么,等下我们让myeclipse自动帮我们添加信息进去
2.跳转到DBBrowser视图,如图
右键这张数据表(userinfo)
在弹出的信息框根据自己的需要,选择自己的项目和目录等。
。
。
如图
-----Next
然后再看下hibernate.cfg.xml
现在看下项目目录情况
自己新建文件夹或者包
现在的情况明显类的位置不好,需要把一些类移动到别的包上,右键要移动的UserinfoDAO.java如下:
(选中红色那个,然后移动到自己想要的包上或者文件夹上)
我们需要为UserinfoDAO.java导出接口
也是右键UserinfoDAO.java
在弹出的对话框自己选择需要的方法或者全选了也没事
然后在把这个接口类移到别的包下
我还创建了hibernate方法调用的工厂类UserinfoFactory.java(com.laogen.Factory)
publicclassUserinfoFactory{
publicstaticUserinfoServicegetMethod(){
returnnewUserinfoDAO();
}
}
hibernate的操作基本就做完了……图片好多啊晕~~
这个是我src目录下的所有文件
现在hibernate算ok了,剩下Struts2了,看下如何添加Struts2的也是跟hibernate差不多的,就是步骤有点多,不知道大家在看这篇文章的时候会不会觉得烦,如果觉得烦,也没办法的,开发这个东西就是这样。
你要知道我在电脑上敲代码和截图,不说了……
弹出信息框,请按照红色方框选择
剩下就是加入jsp和action了,这些基本跟前面我写的文章struts2的增删改查(不知道的可以自己去看看,就在我的XX博客上)没有多少区别,主要是action使用hibernate的一些方法,有所不同,hibernate已经帮我们管理数据库的一些操作,开发更加方便。
。
。
下面是我写的简单的UserinfoAction,主要就是增删改查的功能实现
packagecom.laogen.Action;
importjava.util.List;
importorg.apache.struts2.ServletActionContext;
importorg.hibernate.Session;
importorg.hibernate.Transaction;
importcom.laogen.Factory.UserinfoFactory;
importcom.laogen.Util.HibernateSessionFactory;
importcom.laogen.pojo.Userinfo;
publicclassUserinfoAction{
privateUserinfoFactoryfactory;
privateSessionsession=HibernateSessionFactory.getSession();
privateTransactiontx=session.beginTransaction();//事务
privateListlist;
privateUserinfouserinfo;
publicUserinfogetUserinfo(){
returnuserinfo;
}
publicvoidsetUserinfo(Userinfouserinfo){
this.userinfo=userinfo;
}
publicListgetList(){
returnlist;
}
publicvoidsetList(Listlist){
this.list=list;
}
//显示用户列表
@SuppressWarnings({"unchecked","static-access"})
publicStringlist(){
System.out.println("list方法");
factory=newUserinfoFactory();
list=factory.getMethod().findAll();//findAll方法查询所有信息
return"list";
}
//显示修改用户信息
@SuppressWarnings({"static-access"})
publicStringupdate(){
Stringid=ServletActionContext.getRequest().getParameter("id");//接收要删除的id
intiid=Integer.parseInt(id);
factory=newUserinfoFactory();
userinfo=factory.getMethod().findById(iid);//findById是根据id查到该id的记录
return"update";
}
//显示修改用户信息
@SuppressWarnings({"static-access"})
publicStringupdated(){
Stringid=ServletActionContext.getRequest().getParameter("id");//接收要删除的id
Stringname=ServletActionContext.getRequest().getParameter("name");//接收要删除的id
Stringpass=ServletActionContext.getRequest().getParameter("pass");//接收要删除的id
intiid=Integer.parseInt(id);
factory=newUserinfoFactory();
userinfo=factory.getMethod().findById(iid);//findById是根据id查到该id的记录
userinfo.setName(name);
userinfo.setPass(pass);
try{
factory.getMethod().merge(userinfo);//merge是执行修改
mit();//提交事务
}catch(Exceptione){
e.printStackTrace();
tx.rollback();
}finally{
if(session!
=null)
session.close();//关闭session
}
returnlist();//修改之后再重新查询一边数据
}
//删除用户
@SuppressWarnings({"static-access"})
publicStringdelete(){
Stringid=ServletActionContext.getRequest().getParameter("id");//接收要删除的id
intiid=Integer.parseInt(id);
factory=newUserinfoFactory();
userinfo=factory.getMethod().findById(iid);//findById是根据id查到该id的记录
try{
factory.getMethod().delete(userinfo);
mit();//提交事务
}catch(Exceptione){
e.printStackTrace();
tx.rollback();
}finally{
if(session!
=null)
session.close();//关闭session
}
returnlist();//删除之后再重新查询一边数据
}
//添加用户信息
@SuppressWarnings({"static-access"})
publicStringadd(){
Stringname=ServletActionContext.getRequest().getParameter("name");//接收要添加的name
Stringpass=ServletActionContext.getRequest().getParameter("pass");//接收要添加的pass
userinfo=newUserinfo();
userinfo.setName(name);
userinfo.setPass(pass);
try{
factory.getMethod().save(userinfo);
mit();//提交事务
}catch(Exceptione){
e.printStackTrace();
tx.rollback();
}finally{
if(session!
=null)
session.close();//关闭session
}
returnlist();//添加之后再重新查询一边数据
}
}
然后看下struts.xml用了个通配符*代码更加精简
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http:
//struts.apache.org/dtds/struts-2.1.dtd">
/list.jsp
/{1}.jsp
然后就是页面的代码,有4个页面index.jsp、add.jsp、update.jsp、list.jsp
Index.jsp(就是个连接,查询所有的信息)
<%@pagelanguage="java"import="java.util.*"pageEncoding="gbk"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
登陆界面list
add.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
增加员工
增加信息
formname="myForm"action="Userinfo_add"method="post">
信息
录入
|
name
100%;">
|
pass
100%;">
|
onclick="window.location.href='javascript:
history.go(-1)'">
form>
update.jps
<%@pagelanguage="java"pageEncoding="utf-8"%>
<%@tagliburi="/struts-tags"prefix="s"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
修改修改
iteratorvalue="userinfo">
formname="myForm"action="Userinfo_updated"method="post">
项目
录入
|
name
propertyvalue='name'/>'> propertyvalue='id'/>">
|
password
propertyvalue='pass'/>">
|
onclick="window.location.href='javascript:
history.go(-1)'">
form>
iterator>
list.jsp
<%@pagelanguage="java"pageEncoding="UTF-8"%>
<%@tagliburi="/struts-tags"prefix="s"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
查询所以信息界面
用户信息
|
number
name
password
operate
|
iteratorvalue="list"status="status">
propertyvalue="#status.index+1"/>
propertyvalue="name"/>
propertyvalue="pass"/>
id='+propertyvalue="id"/>">
propertyvalue="name"/>]吗?
')==true){window.location.href='Userinfo_delete?
id='+propertyvalue="id"/>}">
|
iterator>
终于完了谢谢