hibernate+struts2增删查改如何操作?hibernate+struts2增删查改实操

Hibernate 是一个开源免费的、基于 ORM 技术的 Java 持久化框架。简单的说,Hibernate 是一个用来连接和操作数据库的 Java 框架,在企业中是经常使用的,那hibernate+struts2增删查改如何操作?接下来我们就来给大家讲解一下这方面的内容。

hibernate+struts2增删查改.png

配置如下:

hibernate+struts2增删查改如何操作?hibernate+struts2增删查改实操.png

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.html
struts.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工具网。

推荐阅读:

java集合和数组的区别有哪些?java数组如何填充?

qt乱码选择编码选哪个?Qt编程会涉及哪些术语以及名词?

java集合类框架的基本接口有哪些?java集合Collection怎么用?