Hibernate 是一个开源免费的、基于 ORM 技术的 Java 持久化框架。简单的说,Hibernate 是一个用来连接和操作数据库的 Java 框架,在企业中是经常使用的,那hibernate+struts2增删查改如何操作?接下来我们就来给大家讲解一下这方面的内容。
配置如下:
hibernate.hbm.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/zhenzai?characterEncoding=GBK</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <mapping resource="com/model/News.hbm.xml"/> </session-factory> </hibernate-configuration>
com.model.News.java配置:
package com.model; // Generated 2017-3-14 10:57:00 by Hibernate Tools 5.2.0.CR1 import java.util.Date; /** * News generated by hbm2java */ public class News implements java.io.Serializable { private Integer ids; private String title; private Date time; private String content; public News() {} public News(String title, Date time, String content) { this.title = title; this.time = time; this.content = content; } public Integer getIds() { return this.ids; } public void setIds(Integer ids) { this.ids = ids; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public Date getTime() { return this.time; } public void setTime(Date time) { this.time = time; } public String getContent() { return this.content; } public void setContent(String content) { this.content = content; } }
com.model.News..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"> <!-- Generated 2017-3-14 10:57:01 by Hibernate Tools 5.2.0.CR1 --> <hibernate-mapping> <class name="com.model.News" table="news" catalog="zhenzai" optimistic-lock="version"> <id name="ids" type="java.lang.Integer"> <column name="ids" /> <generator class="identity" /> </id> <property name="title" type="string"> <column name="title" /> </property> <property name="time" type="timestamp"> <column name="time" length="19" /> </property> <property name="content" type="string"> <column name="content" /> </property> </class> </hibernate-mapping>
com.dao.HibernateUtil.java配置:
package com.dao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import javafx.util.BuilderFactory; public class HibernateUtil { private static final SessionFactory factory = BuilderFactory(); private static final ThreadLocal < Session > lock = new ThreadLocal < Session > (); private static SessionFactory BuilderFactory() { Configuration config = new Configuration() .configure(); return config.buildSessionFactory(); } public static Session getsession() { Session session = lock.get(); if (session == null) { session = factory.openSession(); lock.set(session); } return session; } public static void closeSession() { Session session = lock.get(); if (session != null) { session.close(); lock.set(null); } } }
com.dao.NewsDao.java配置:
package com.dao; import java.util.ArrayList; import java.util.List; import org.hibernate.Session; import com.model.News; public class NewsDao { private Session session = null; public NewsDao() { session = HibernateUtil.getsession(); } public List < News > select() { List < News > list = new ArrayList < News > (); try { list = session.createQuery("from News") .getResultList(); } catch (Exception e) { e.printStackTrace(); } finally { HibernateUtil.closeSession(); } return list; } public News select(int ids) { News list = new News(); try { list = (News) session.createQuery("from News where ids=?") .setParameter(0, ids) .getSingleResult(); } catch (Exception e) { e.printStackTrace(); } finally { HibernateUtil.closeSession(); } return list; } public void insert(News news) { try { session.beginTransaction(); session.save(news); session.getTransaction() .commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction() .rollback(); } finally { HibernateUtil.closeSession(); } } public void update(News news) { try { session.beginTransaction(); News n = session.get(News.class, news.getIds()); n.setTitle(news.getTitle()); n.setTime(news.getTime()); n.setContent(news.getContent()); session.update(n); session.getTransaction() .commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction() .rollback(); } finally { HibernateUtil.closeSession(); } } public void delete(int ids) { try { session.beginTransaction(); News n = session.get(News.class, ids); session.delete(n); session.getTransaction() .commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction() .rollback(); } finally { HibernateUtil.closeSession(); } } }
接下来就是配置struts的内容:
web.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts Blank</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> index.htmlstruts.xml配置:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="*_*" class="com.controller.{1}Action" method="{2}"> <result> {1}_{2}.jsp </result> </action> </package> </struts>
com.controller.NewsAction.java配置:
package com.controller; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.dao.NewsDao; import com.model.News; import com.opensymphony.xwork2.ActionSupport; public class NewsAction extends ActionSupport { private int ids; //创建一个ids字段,供前后端调用时使用 private News news; //创建一个news对象,供前端调用时直接使用news.xxxx public int getIds() { return ids; } public void setIds(int ids) { this.ids = ids; } public News getNews() { return news; } public void setNews(News news) { this.news = news; } public String get() { //对应News_get.jsp界面 news = new NewsDao() .select(ids); return SUCCESS; } public String getAll() { //对应News_getAll.jsp界面 List < News > list = new NewsDao() .select(); HttpServletRequest req = ServletActionContext.getRequest(); //后端直接使用request搭建前后端连接 req.setAttribute("list", list); return SUCCESS; } public String add() { //对应News_add.jsp界面 return SUCCESS; } public String insert() { //对应News_insert.jsp界面 new NewsDao() .insert(news); return SUCCESS; } public String edit() { //对应News_edit.jsp界面 news = new NewsDao() .select(ids); return SUCCESS; } public String update() { //对应News_update.jsp界面 new NewsDao() .update(news); return SUCCESS; } public String delete() { //对应News_delete.jsp界面 new NewsDao() .delete(ids); return SUCCESS; } }
News_getAll.jsp配置:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <h1>新闻显示</h1> <div> <c:forEach var="l" items="${list }">//获取getAll方法中request提供的list <div> <a href="News_get?ids=${l.ids }">${l.ids } ${l.title }</a> <a href="News_edit?ids=${l.ids }">修改</a><a href="News_delete?ids=${l.ids }">删除</a> </div> </c:forEach> </div> <div> <a href="News_add">添加</a> </div> </body> </html> News_get.jsp配置: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> ${news.title }//使用的是NewsAction方法中的private News news; ${news.time } ${news.content }
News_add.jsp配置:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <h1>新闻添加</h1> <form action="News_insert" method="post"> 标题:<input type="text" name="news.title"><br>//使用的是NewsAction方法中的private News news; 时间:<input type="text" name="news.time"><br> 内容:<textarea rows="10" cols="12" name="news.content"></textarea> <input type="submit" value="添加"> </form> </body> </html
News_insert.jsp配置:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> 添加成功 </body> </html>
News_edit.jsp配置:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <form method="post" action="News_update"> <input type="hidden" name="news.ids" value="${news.ids }"><br>//使用的是NewsAction方法中的private News news; 标题:<input type="text" name="news.title" value="${news.title }"><br> 时间:<input type="text" name="news.time" value="${news.time }"><br> 内容:<textarea rows="10" cols="10" name="news.content" >${news.content }</textarea> <input type="submit" value="修改"> </form> </body> </html>
News_update.jsp配置:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> 修改成功 </body> </html>
News_delete.jsp配置:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> 删除成功 </body> </html>
这样我们就实现了hibernate+struts2增删查改的相关流程,整个流程看起来很长,但是只要我们掌握好技巧,理清逻辑思维,还是很简单的,大家可以试试!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: