hibernate简单程序,实现从页面对数据库的增删改查(主从表关联)

来源:互联网 发布:知乎无法复制 编辑:程序博客网 时间:2024/05/16 19:45

      前段时期一直使用三层来写从页面对数据库的增删改查,今天用hibernate框架来实现从页面对数据库的增删改查,

首先介绍下今天我们要实现的功能,

1、用户能够注册,2、注册成功后直接跳到登录页面,3、登录成功后直接跳到对公司、人员的增删改查,

4、要有对人员界面的分页功能

一、首先看下文件的目录


unity里面写的是配置文件的session接口工具,dao层就是各种增删改查的方法

1、首先得配置文件:hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory ><!-- 配置数据库连接信息 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/company</property><property name="connection.username">root</property><property name="connection.password">DCX5201314</property><!-- 数据库方言--><property name="dialect"> org.hibernate.dialect.MySQL5Dialect</property><!-- 非必要的 --><property name="hbm2ddl.auto">update</property><!-- 可以反向生成表 --><!-- 映射配置文件 --><mapping  resource="entity/user.hbm.xml"/><mapping  resource="entity/bm.hbm.xml"/><mapping  resource="entity/ry.hbm.xml"/></session-factory></hibernate-configuration>
2、配置untitl.java

package unity;public class unitl {public Session lj(){//新建Configuration对象Configuration cfg=new Configuration().configure();//通过Configuration创建SessionFactory对象ServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();        SessionFactory sf = cfg.buildSessionFactory(registry);        //创建session        Session session=sf.openSession();return session;}}

3、首先我们先写用户的注册、登录

配置文件:user.hbm.xml

<hibernate-mapping >    <class name="entity.user" table="user" >           <id name="id" >             <!-- 设置主键 -->            <generator class="native"></generator>        </id>             <property name="name" />        <property name="pwd" />           </class></hibernate-mapping>
user.java文件(定义数据库里面的属性)

package entity;public class user {private int id;private String name;private String pwd;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}}
Userzhuceservlet.java文件(servlet层)

public class Userzhuceservlet extends HttpServlet {dao.selectone se=new dao.selectone();public Userzhuceservlet() {super();}public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();this.doPost(request, response);out.flush();out.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();//用type接受页面的值String type=request.getParameter("type");if ("1".equals(type)) {System.out.println("haha");//调用条件查询的方法zhuce(request, response);}else if ("2".equals(type)) {login(request, response);}out.flush();out.close();}/*************注册********************************************/public void zhuce(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String name=request.getParameter("name");String pwd=request.getParameter("pwd");int a=se.selllt(name,pwd);if (a>0) {response.sendRedirect("login.jsp");}}/*************登录********************************************/public void login(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String name=request.getParameter("name");String pwd=request.getParameter("pwd");int a=se.login(name,pwd);if (a>0) {System.out.println("登录成功");response.sendRedirect("index.jsp");}else {System.out.println("登录失败");}}public void init() throws ServletException {// Put your code here}}
selectone.java文件(名字起的有点问题,是用户的Dao层文件)

public class selectone {//调用工具包static unitl unitl=new unitl();static Session session=unitl.lj();/****************注册************************************/public int selllt(String name,String pwd){int a=0;//3、开启事务        Transaction ts=session.beginTransaction();        //执行数据库操作        //添加操作        user u=new user();        u.setName(name);        u.setPwd(pwd);        session.save(u);        System.out.println("注册成功");        //提交ts.commit();//关闭session//session.close();a=1;return a;}/****************登录************************************/public int login(String name,String pwd){        //执行数据库操作//编写hqlString hql="select name from user where name=? and pwd=?";List<String> list=session.createQuery(hql).setString(0, name).setString(1, pwd).list();int a=list.size();System.out.println(list.size());//for(String na:list){//System.out.println(na+"=====");//}//关闭session//session.close();return a;}}
zhuce.jsp部分代码

<body>    <h1>欢迎来到人力资源管理系统</h1>    <form action="Userzhuceservlet" method="post">    <input type="hidden" value="1" name="type">           <tr> <td>要注册的用户名 :</td><td><input type="text" name="name"/></td></tr>           <tr> <td> 密码:</td><td><input type="password" name="pwd"/></td></tr>           <tr><td><input type="submit" value="确认"></td></tr>    </form>  </body>
login.jsp代码:

<body>    <h1>欢迎来到人力资源登录系统</h1>    <form action="Userzhuceservlet" method="post">    <input type="hidden" value="2" name="type">           <tr><td> 用户名 :</td><td><input type="text" name="name"/></td><br/></tr>            <tr> <td>密码:</td><td><input type="password" name="pwd"/></td><br/></tr>                          <tr><td><input type="submit" value="确认"></td></tr>    </form>  </body>
至于head、left、right、等页面参考我之前的文章http://blog.csdn.net/qq_34178998/article/details/76578233这里就不在重复写了

4、再写部门的增删改查

配置bm.hbm.xml文件:

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping >    <class name="entity.bm" table="bm"  >               <id name="id" >             <!-- 设置主键 -->            <generator class="native"></generator>        </id>        <property name="bmname" />            </class></hibernate-mapping>
bm.java文件
public class bm {private int id;private String bmname;public bm(int id,String bmname){this.id=id;this.bmname=bmname;}    public bm(int id){this.id=id;}public bm(){}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getBmname() {return bmname;}public void setBmname(String bmname) {this.bmname = bmname;}}
BmServlet.java文件代码:

package servlet;public class BmServlet extends HttpServlet {BmDao bd=new BmDao();public BmServlet() {super();}public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();this.doPost(request, response);out.flush();out.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();//用type接受页面的值String type=request.getParameter("type");if ("1".equals(type)) {        //添加部门的方法addbm(request, response);}else if ("2".equals(type)) {    //查询所有部门的方法selectall(request, response);}else if ("3".equals(type)) {    //根据ID删除部门selectry(request, response);}else if ("4".equals(type)) {    //根据修改部门update(request, response);}else if ("5".equals(type)) {    //根据ID查询一个部门selectone(request, response);}out.flush();out.close();}/***********************添加部门*********************************************************/public void addbm(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String bmname=request.getParameter("bmname");int a=bd.addbm(bmname);if (a>0) {selectall(request, response);System.out.println("添加部门成功");}else {System.out.println("添加部门失败");response.sendRedirect("addbm.jsp");}}/***********************查询所有部门*********************************************************/public void selectall(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {List<bm> list=new ArrayList<bm>();list=bd.selectall();request.setAttribute("list", list);RequestDispatcher rd=request.getRequestDispatcher("showbm.jsp");rd.forward(request, response);}/***********************根据ID删除部门*********************************************************/public void delete(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int id=Integer.parseInt(request.getParameter("id"));bd.delete(id);selectall(request, response);}/***********************修改部门*********************************************************/public void update(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int id=Integer.parseInt(request.getParameter("id"));String newbmname=request.getParameter("newbmname");bd.update(id, newbmname);selectall(request, response);}/***********************根据点中的ID查询一个部门*********************************************************/public void selectone(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int id=Integer.parseInt(request.getParameter("id"));List<bm> list=bd.selectone(id);for(bm bb:list){//System.out.println(bb.getBmname()+bb.getId());request.setAttribute("list", bb);}//System.out.println("aa");RequestDispatcher rd=request.getRequestDispatcher("updatebm.jsp");rd.forward(request, response);}/***********************根据ID删除部门*********************************************************/public void selectry(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int id=Integer.parseInt(request.getParameter("id"));System.out.println(id);int a=bd.selectonee(id);if(a>0){delete(request, response);}}public void init() throws ServletException {// Put your code here}}
BmDao.java文件:

public class BmDao {//调用工具包static unitl unitl=new unitl();static Session session=unitl.lj();int a=0;/***********添加部门****************************************************/public int addbm(String bmname){int a=0;//3、开启事务        Transaction ts=session.beginTransaction();        //执行数据库操作        //添加操作        bm b=new bm();        b.setBmname(bmname);        session.save(b);        //提交ts.commit();//关闭session//session.close();a=1;return a;}/***********查看所有部门****************************************************/@SuppressWarnings("unchecked")public List<bm> selectall(){//执行数据库操作//编写hqlString hql="from bm ";List<bm> list=session.createQuery(hql).list();return list;}/***********根据ID删除部门****************************************************/public int delete(int id){int a=0;//3、开启事务        Transaction ts=session.beginTransaction();        //执行数据库操作        //删除操作        bm b=(bm)session.get(bm.class, id);//注意强转        session.delete(b);                        //提交ts.commit();//关闭session//session.close();a=1;return a;}/***********修改部门****************************************************/public void update(int id, String name){//执行数据库操作//编写hqlTransaction ts=session.beginTransaction();bm b=(bm)session.load(bm.class, id);System.out.println(name);b.setBmname(name);session.update(b);//提交ts.commit();}/***********根据ID查询一个部门****************************************************/public List<bm>  selectone(int id){//执行数据库操作//编写hqlString hql="select new bm(id,bmname) from bm where id=?";List<bm> list=session.createQuery(hql).setInteger(0, id).list();//for(bm bb:list){//System.out.println(bb.getBmname()+bb.getId());////}return list;}/***********查询部门有没有人****************************************************/@SuppressWarnings("unchecked")public int  selectonee(int id){int a=1;String sql="select *from ry where bmid="+id+"";List<ry> list=session.createSQLQuery(sql).list();if(list.size()>0){a=0;}return a;}}
addbm.jsp文件:
<body style="background-image:url(bg3.jpg)">    <h1>这是添加部门界面</h1>    <form action="BmServlet" method="post">    <input type="hidden" value="1" name="type">            部门:<input type="text" name="bmname"/><br/>    <input type="submit" value="提交">    </form>  </body>
showbm.jsp文件:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <body style="background-image:url(bg3.jpg)">    <h1>这是显示页面</h1>    <h1>显示部门种类</h1>    <table border="1">    <tr><td>编号</td><td>部门种类</td><td>操作</td></tr>    <c:forEach items="${list}" var="bm">     <tr>    <td>${bm.id}</td><td>${bm.bmname}</td>    <td><a href="BmServlet?type=5&&id=${bm.id}">修改</a><!-- 修改前先查一个 -->         <a href="BmServlet?type=3&&id=${bm.id}">删除</a></td>        </tr>    </c:forEach>    </table>    </body>
updatebm.jsp文件

<body style="background-image:url(bg3.jpg)">    <h1>修改类型页面</h1>      <form action="BmServlet" method="post">    <input type="hidden" value="4" name="type">    <input type="hidden" value="${list.id }" name="id">             部门:<input type="text" name="newbmname" value="${list.bmname }"><br/>       <input type="submit" value="提交">  </body>
5、接下来是各部门的人员

ry.hbm.xml配置文件:

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping >    <class name="entity.ry" table="ry"    >               <id name="id" >             <!-- 设置主键 -->            <generator class="native"></generator>        </id>                <property name="name"></property>        <property name="phone"></property>        <property name="address"></property>         <property name="bmid"></property>          </class></hibernate-mapping>
ry.java实体文件:

package entity;public class ry {private int id;private String name;private String phone;private String address;private int bmid;private String bmname;public ry(){}public ry(int id,String name,String phone,String address,int bmid){this.id=id;this.name=name;this.phone=phone;this.address=address;this.bmid=bmid;}public ry(int id,String name,String phone,String address){this.id=id;this.name=name;this.phone=phone;this.address=address;}public int getBmid() {return bmid;}public void setBmid(int bmid) {this.bmid = bmid;}public String getBmname() {return bmname;}public void setBmname(String bmname) {this.bmname = bmname;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}
RyServlet.java文件

package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import java.util.Map;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import dao.BmDao;import dao.RyDao;import entity.bm;import entity.ry;public class RyServlet extends HttpServlet {BmDao bd=new BmDao();RyDao ry=new RyDao();public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();this.doPost(request, response);out.flush();out.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();//接受页面的type值String type=request.getParameter("type");if ("1".equals(type)) {    //跳到添加人员的界面前要先把部门种类查询出来selectbm(request, response);}else if ("2".equals(type)) { //添加人员信息addry(request, response);}else if ("3".equals(type)) { //查询所有人员信息//selectallry(request, response);select(request, response);}else if ("4".equals(type)) { //删除操作selectry(request, response);}        else if ("5".equals(type)) { //1、修改操作,修改前先根据ID查询selectone(request, response);}        else if ("6".equals(type)) { //2、修改操作,update(request, response);}out.flush();out.close();}/************先所有查询部门**************************************************/public void selectbm(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {List<bm> list=new ArrayList<bm>();list=bd.selectall();request.setAttribute("list", list);RequestDispatcher rd=request.getRequestDispatcher("addren.jsp");rd.forward(request, response);}/************添加人员**************************************************/public void addry(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String name=request.getParameter("name");String phone=request.getParameter("phone");String address=request.getParameter("address");int bmid=Integer.parseInt(request.getParameter("bmid"));int a=ry.addry(name, phone, address, bmid);if (a>0) {System.out.println("添加人员成功");//查询所有人员selectallry(request, response);}}/************查看所有人员**************************************************/public void selectallry(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {List<Map<String, Object>> list=ry.selectall();request.setAttribute("list", list);RequestDispatcher rd=request.getRequestDispatcher("showry.jsp");rd.forward(request, response);}/************查看所有人员********************************************************************************/public void select(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{int size=0;int pagecount=0;int curPage=1;List<Map<String, Object>>list1=ry.selectall();size=list1.size();pagecount=(size%3==0)?(size/3):(size/3+1);String curpage=request.getParameter("curPage");String tz=request.getParameter("tz");if ("1".equals(tz)) {String pagedip=request.getParameter("pagedip");curPage=Integer.parseInt(pagedip);}else if (curpage!=null&&!curpage.isEmpty()) {curPage=Integer.parseInt(curpage);}request.setAttribute("pagecount", pagecount);request.setAttribute("curPage",curPage);if (curPage>=pagecount) {curPage=pagecount;}List<Map<String, Object>> list=ry.selectpage(curPage);request.setAttribute("list",list);RequestDispatcher rd=request.getRequestDispatcher("showry.jsp");rd.forward(request, response);}/***********************修改前根据点中的ID查询一个*********************************************************/public void selectone(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int id=Integer.parseInt(request.getParameter("id"));List<ry> list=ry.selectone(id);for(ry rr:list){System.out.println(rr.getName()+rr.getId());request.setAttribute("list", rr);}RequestDispatcher rd=request.getRequestDispatcher("updatery.jsp");rd.forward(request, response);}/***********************修改*********************************************************/public void update(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int id=Integer.parseInt(request.getParameter("idss"));String nname=request.getParameter("name");String nphone=request.getParameter("phone");String naddress=request.getParameter("address");ry.update(id, nname, nphone, naddress);selectallry(request, response);}/***********************根据ID删除*********************************************************/public void selectry(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int id=Integer.parseInt(request.getParameter("id"));System.out.println(id);ry.delete(id);selectallry(request, response);}public void init() throws ServletException {// Put your code here}}
RyDao.java文件:

package dao;public class RyDao {//调用工具包static unitl unitl=new unitl();static Session session=unitl.lj();/*******************添加人员信息*******************************************/public int addry(String name,String phone,String address,int bmid){int a=0;//3、开启事务        Transaction ts=session.beginTransaction();        //执行数据库操作                ry r=new ry();        r.setName(name);        r.setPhone(phone);        r.setAddress(address);        r.setBmid(bmid);        session.save(r);                System.out.println("添加人员成功");        //提交ts.commit();//关闭session//session.close();a=1;return a;}/*******************查询所有人员信息*******************************************/@SuppressWarnings("unchecked")public List<Map<String, Object>> selectall(){//执行数据库操作//编写hqlString sql="select r.id,r.name,r.phone,r.address,b.bmname from bm b, ry r where b.id=r.bmid";Query query=session.createSQLQuery(sql);List<Map<String, Object>> list=query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();return list;}/*******************查询所有人员信息*******************************************/public List<Map<String,Object>> selectpage(int page) {// TODO Auto-generated method stubQuery query = session.createSQLQuery("select r.id,r.name,r.phone,r.address,b.bmname from bm b, ry r where b.id=r.bmid");  query.setFirstResult((page-1)*3);query.setMaxResults(3);List<Map<String,Object>> result=query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP).list();return result;}/***********根据ID查询一个****************************************************/@SuppressWarnings("unchecked")public List<ry>  selectone(int id){//执行数据库操作//编写hqlString hql="select new ry(id,name,phone,address) from ry where id=?";List<ry> list=session.createQuery(hql).setInteger(0, id).list();return list;}/*******************修改人员信息*******************************************/public void update(int id, String name,String phone,String address){//执行数据库操作//编写hql//3、开启事务        Transaction ts=session.beginTransaction();//修改    ry r=(ry) session.load(ry.class, id);r.setName(name);r.setPhone(phone);r.setAddress(address);session.update(r); //提交ts.commit();}/***********根据ID删除部门****************************************************/public int delete(int id){int a=0;//3、开启事务        Transaction ts=session.beginTransaction();        //执行数据库操作        //删除操作        ry r=(ry)session.get(ry.class, id);//注意强转        session.delete(r);                        //提交ts.commit();//关闭session//session.close();a=1;return a;}}
addren.jsp文件:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><body style="background-image:url(bg3.jpg)">   <h1>添加人员界面</h1>    <form action="RyServlet" method="post">    <input type="hidden" value="2" name="type">     名字:<input type="text" name="name"/><br/>      电话:<input type="text" name="phone"/><br/>       住址:<input type="text" name="address"/><br/>       部门:<select name="bmid">       <c:forEach items="${list}" var="bm">       <option value="${bm.id}"> ${bm.bmname }</option>       </c:forEach>         </select>    <input type="submit" value="提交">    </form>  </body>
showry.jsp文件:

<body style="background-image:url(bg3.jpg)">    <h1>这是显示页面</h1>    <h1>显示人员</h1>    <table border="1">    <tr><td>编号</td><td>姓名</td><td>电话</td><td>地址</td><td>部门</td><td>操作</td></tr>    <c:forEach items="${list}" var="ry">     <tr>    <td>${ry.id}</td><td>${ry.name}</td><td>${ry.phone}</td><td>${ry.address}</td>    <td>${ry.bmname}</td>            <td><a href="RyServlet?type=5&&id=${ry.id}">修改</a>  &nbsp;&nbsp;     <a href="RyServlet?type=4&&id=${ry.id}">删除</a></td>     </tr>     </c:forEach>     </table>      <a href="RyServlet?type=3&&curPage=1">首页</a>    <a href="RyServlet?type=3&&curPage=${curPage-1}">上一页</a>     <a href="RyServlet?type=3&&curPage=${curPage+1}">下一页</a>    <a href="RyServlet?type=3&&curPage=${pagecount}">尾页</a> 总页数:${pagecount} 当前页数:${curPage}<br/>    <form action="RyServlet?type=3" method="post">    跳转到<input type="text"  name="pagedip" value="${curPage}" />页 <input type="hidden" name="tz" value="1"/>  <input type="submit" value="跳转"  />       </body>
updatery.jsp文件:

<body>  <h1>修改内容页面</h1>      <form action="RyServlet" method="post">    <input type="hidden" value="6" name="type">    <input type="hidden" name="idss" value="${list.id}"/>       名字:<input type="text" name="name" value="${list.name}"/><br/>      电话:<input type="text" name="phone" value="${list.phone}"/><br/>       地址:<input type="text" name="address"  value="${list.address}"/><br/>       <input type="submit" value="提交">       </form>       </body>
以上就是我的全部代码,部门jsp文件的c标签的包没导入,要注意一下,具体其他的页面可以参考我之前写的博客大笑


阅读全文
0 0
原创粉丝点击