用hibernate+struts2+easyUI进行增删查改

首先我们需要下进行梳理,先了解一下hibernate,之前小编没有讲到过hibernate框架的有关知识。

那么接下来给大家看看思维导图:


这是两张关于hibernate的思维导图

2.那话不多说演示案例代码:看看效果图


3.代码:新建maven web项目,然后进行相应的配置

<1>pom.xml配置你需要的依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>My_Hibernat</groupId>
  <artifactId>My_Hibernat</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>My_Hibernat Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <!-- 乱码 问题-->
  <properties>  
      <argLine>-Dfile.encoding=UTF-8</argLine>
  </properties>
  
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    
     <!-- servlet -->
     <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.0-b07</version>
    <scope>provided</scope>
   </dependency>
   
   <!-- 加入hibernate依赖 -->
    <dependency>
	   <groupId>org.hibernate</groupId>
	   <artifactId>hibernate-core</artifactId>
	   <version>5.2.10.Final</version>
	</dependency>
    
    
    <!-- 注意这两个版本不宜过高,不然可能会报错 -->
   <!-- strtus依赖 -->
    <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.33</version>
   </dependency>
   
   <!-- mysql依赖 -->
   <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
   </dependency> 
   <!--json-lib依赖-->  
	<!--  <dependency>  
	    <groupId>net.sf.json-lib</groupId>  
	    <artifactId>json-lib</artifactId>  
	     <version>2.4</version>  
	    <classifier>jdk15</classifier>  
	</dependency> -->
	
	<!-- fastjson的依赖 -->
	<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.31</version>
    </dependency>
	
   
    
 
    
  </dependencies>
  <build>
    <finalName>My_Hibernat</finalName>
  </build>
</project>

<2>实体类的xml配置:Administrator.hbm.xml(此xml里的属性要与实体类数据库属性一致,不然可能会有错误),还有就是实体类和xml需要在一个包。就是实体类entity

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-8-21 18:28:41 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="com.tiny.entity.Administrator" table="ADMINISTRATOR">
        <id name="a_id" type="int">
            <column name="A_ID" />
            <generator class="native" />
        </id>
        <property name="a_name" type="java.lang.String">
            <column name="A_NAME" />
        </property>
        <property name="a_pass" type="java.lang.String">
            <column name="A_PASS" />
        </property>
    </class>
</hibernate-mapping>

再看看实体类吧,那样你会更加清楚 Administrator实体类

package com.tiny.entity;

public class Administrator {
	private int a_id;
	private String a_name;
	private String a_pass;
	public int getA_id() {
		return a_id;
	}
	public void setA_id(int a_id) {
		this.a_id = a_id;
	}
	public String getA_name() {
		return a_name;
	}
	public void setA_name(String a_name) {
		this.a_name = a_name;
	}
	public String getA_pass() {
		return a_pass;
	}
	public void setA_pass(String a_pass) {
		this.a_pass = a_pass;
	}
	
	public Administrator() {
		
	}
	
	
	public Administrator(int a_id) {
		super();
		this.a_id = a_id;
	}
	public Administrator(String a_name, String a_pass) {
		this.a_name = a_name;
		this.a_pass = a_pass;
	}
	public Administrator(int a_id, String a_name, String a_pass) {
		this.a_id = a_id;
		this.a_name = a_name;
		this.a_pass = a_pass;
	}
	
	
	
}


<3>web.xml配置:过滤所有的struts2的以action结尾的类

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</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>*.action</url-pattern>
  </filter-mapping>
</web-app>

<4>struts.xml:关于类的配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
    	<package name="mypackage"  extends="struts-default" namespace="/">
    		<action name="admin" class="com.tiny.action.AdminAction">
    			<result name="success">index.jsp</result>
    		</action>
    	</package>
    </struts>


<5>最后是hibernate.cfg.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="connection.username">root</property>
    	<property name="connection.password">Zhang12345678</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/mydemo</property>
    	<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
   
   		<!-- 关联 映射文件-->
   		<mapping resource="com/tiny/entity/Administrator.hbm.xml"/>
   
    </session-factory>
</hibernate-configuration>

<6>方法的封装:写于util包

package com.tiny.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
	
	private static Configuration configuration;
	private static SessionFactory sessionFactory;
	private static Session session;
	private static Transaction transaction;

	public static Session getSession(){
		
		configuration = new Configuration().configure();
		sessionFactory = configuration.buildSessionFactory();
		session = sessionFactory.openSession();
		transaction = session.beginTransaction();
		return session;
	}
	
	public static void ConnClose(){
		transaction.commit();
		session.close();
		sessionFactory.close();
	}
	
}

最后是action:调用方法:

package com.tiny.action;

import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.hibernate.Session;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.opensymphony.xwork2.ActionSupport;
import com.tiny.entity.Administrator;
import com.tiny.util.HibernateUtil;



public class AdminAction  extends ActionSupport{
	private int a_id;
	private String a_name;
	private String a_pass;
	private Administrator administrator;
	private HibernateUtil util;

	//查
	public String adminSelect() throws Exception {
		//解决乱码
		HttpServletRequest req=ServletActionContext.getRequest();
		req.setCharacterEncoding("UTF-8");
//		System.out.println("进来了。。。。。adminSelect");
		util = new HibernateUtil();
		Session session=util.getSession();
        List<Administrator> admin=session.createCriteria(Administrator.class).list();
        Map<String, Object> maps=new HashMap<String, Object>();
		maps.put("total", 100);
		maps.put("rows", admin);
		String jsonbject=JSON.toJSONString(maps);
		HttpServletResponse resp=ServletActionContext.getResponse();
		resp.setContentType("text/html; charset=UTF-8");
		PrintWriter pw=resp.getWriter();
		pw.write(jsonbject);
		pw.close();
		return "success";
	}
	
	//删
	public String adminDelect() throws Exception {
		//解决乱码
		HttpServletRequest req=ServletActionContext.getRequest();
		req.setCharacterEncoding("UTF-8");
		System.out.println("进来了。。。。。adminDelect");
		util = new HibernateUtil();
		Session session=util.getSession();
		int _id=Integer.parseInt(req.getParameter("a_id"));
		Administrator admin=new Administrator(_id);
		boolean result=false;
		try {
			session.delete(admin);
			result=true;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			util.ConnClose();
		}
		
		if(result){
			String res="true";
			Map<String, Object> mps=new HashMap<String, Object>();
			mps.put("res",res);
			String jsonObject=JSON.toJSONString(res);
			HttpServletResponse resp=ServletActionContext.getResponse();
			resp.setContentType("text/html; charset=UTF-8");
			PrintWriter pw=resp.getWriter();
			pw.write(jsonObject);
			pw.close();
		}else{
			String res="false";
		}
		
		return "success";
	}
	
	
	//增加
	public String adminAdd() throws Exception {
		//解决乱码
		HttpServletRequest req=ServletActionContext.getRequest();
		req.setCharacterEncoding("UTF-8");
//		System.out.println("进来了。。。。。adminAdd");
		util = new HibernateUtil();
		Session session=util.getSession();
		String name=req.getParameter("a_name");
		String pass=req.getParameter("a_pass");
		Administrator admin=new Administrator(name, pass);
//		System.out.println(name+"名字");
		boolean result=false;
		try {
			session.save(admin);
			result=true;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			util.ConnClose();
		}
		if(result){
			String res="true";
			Map<String, Object> mps=new HashMap<String, Object>();
			mps.put("res",res);
			String jsonObject=JSON.toJSONString(res);
			HttpServletResponse resp=ServletActionContext.getResponse();
			resp.setContentType("text/html; charset=UTF-8");
//			System.out.println("关于"+jsonObject+"获取增加的值");
			PrintWriter pw=resp.getWriter();
			pw.write(jsonObject);
			pw.close();
		}else{
			String res="false";
		}
		return "success";
	}
	
	
	//修改
	public String adminUpdate() throws Exception {
		//解决乱码
		HttpServletRequest req=ServletActionContext.getRequest();
		req.setCharacterEncoding("UTF-8");
		System.out.println("进来了。。。。。adminUpdate");
		util = new HibernateUtil();
		Session session=util.getSession();
		int _id=Integer.parseInt(req.getParameter("a_id"));
		String name=req.getParameter("a_name");
		String pass=req.getParameter("a_pass");
		Administrator admin=new Administrator(_id,name,pass);
		boolean result=false;
		try {
			session.update(admin);
			result=true;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			util.ConnClose();
		}
		
		if(result){
			String res="true";
			Map<String, Object> mps=new HashMap<String, Object>();
			mps.put("res",res);
			String jsonObject=JSON.toJSONString(res);
			HttpServletResponse resp=ServletActionContext.getResponse();
			resp.setContentType("text/html; charset=UTF-8");
			PrintWriter pw=resp.getWriter();
			pw.write(jsonObject);
			pw.close();
		}else{
			String res="false";
		}
		return "success";
	}

	
	public Administrator getAdministrator() {
		return administrator;
	}

	public void setAdministrator(Administrator administrator) {
		this.administrator = administrator;
	}

	
	
}

4.逻辑处理页大概就到这了,运用easyui进行的界面处理,数据交互,代码演示:

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>表格增删改查</title>
	<!-- 引入JQuery -->
	<script type="text/javascript" src="js/jquery-easyui-1.5.2/jquery.min.js"></script>
	<!-- 引入EasyUI -->
	<script type="text/javascript" src="js/jquery-easyui-1.5.2/jquery.easyui.min.js"></script>
	<!-- 引入EasyUI的中文国际化js,让EasyUI支持中文 -->
	<script type="text/javascript" src="js/jquery-easyui-1.5.2/locale/easyui-lang-zh_CN.js"></script>
	<!-- 引入EasyUI的样式文件-->
	<link rel="stylesheet" href="js/jquery-easyui-1.5.2/themes/black/easyui.css" type="text/css"/>
	<!-- 引入EasyUI的图标样式文件-->
	<link rel="stylesheet" href="js/jquery-easyui-1.5.2/themes/icon.css" type="text/css"/>
	<script type="text/javascript" src="datagrid/datagrid.js"></script>
</head>
<body>
	<!-- 引用表格 -->
	<table id="dg" class="easyui-datagrid" style="width:1360px;height:700px ; font-size:25px" ></table>
</body>
</html>

js:

$(function(){
	$('#dg').datagrid({    
	    url:'admin!adminSelect.action',  
	    rownumbers:true,
		sortable:true,
		pageSize:5,
		pageList:[5,15,25],
   	    rownumbers:true,
	    pagination: true,
	    fitColumns:true,
	    checkOnSelect:true,
	    columns:[[ 
	        {field:'a_id',title:'编号',width:100,align:'center'},    
	        {field:'a_name',title:'名字',width:100,align:'center',"editor":{type:'validatebox'}},    
	        {field:'a_pass',title:'密码',width:100,align:'center',"editor":{type:'validatebox'}}    
	    ]],onDblClickCell:function(index,field,value){
	    	DBindex=index;//双击
	    	$(this).datagrid('beginEdit', index);
	    },onClickCell:function(index,field,value){
	    	Sindex=index;//单击
	    },
	    //通过数组定义工具栏:   
	    toolbar: [{
	    	     iconCls: 'icon-add',text:'增加',handler: function(){
//				alert('编辑按钮');
				$("#dg").datagrid('insertRow',{
					index: 0,	// 索引从0开始
					row: {}
				});
				$("#dg").datagrid("beginEdit",0);
			}
		},'-',//删除
		{
			iconCls: 'icon-remove',text:'删除',handler: function(){
				
			$.messager.confirm('确认','您确认想要删除记录吗?',function(r){    
			    if (r){    
			    	var row=$("#dg").datagrid("getRows")[Sindex];
					 var a_id=row["a_id"];
					 $.post(
							"admin!adminDelect.action", 
							{"a_id":a_id},
							function(data){
								$("#dg").datagrid('reload');
							});  
			    }    
			});  
			}},'-',
			  //修改方法
			{iconCls: 'icon-edit',text:'修改',handler: function(){
				 //结束编译
			     $("#dg").datagrid("endEdit",DBindex);
				 var row=$("#dg").datagrid("getRows")[DBindex];
				 var a_id=row["a_id"];
				 var a_name=row["a_name"];
				 var a_pass=row["a_pass"];
				 alert(alert);
		    	 $.post(
			    	     "admin!adminUpdate.action",
			    	     {"a_id":a_id,"a_name":a_name,"a_pass":a_pass},
			    	     function(data){
			    	    	 $("#dg").datagrid('reload');
			    	     }
			    	 );
			}},'-',
			
			//保存
		{
			iconCls: 'icon-save',text:'保存',handler: function(){
			//结束编译,增加的方法
			$("#dg").datagrid("endEdit",0);
			var row=$("#dg").datagrid("getRows")[0];
			if(row!=null){
				 var a_name=row["a_name"];
				 var a_pass=row["a_pass"];
				$.post(
						 "admin!adminAdd.action",
			    	     {"a_name":a_name,"a_pass":a_pass},
			    	     function(data){
			    	    	$("#dg").datagrid('reload');
			    	     });
			}
			}},'-',
			//刷新
			{iconCls: 'icon-reload',text:'刷新',handler: function(){
				//alert('帮助按钮')
				$("#dg").datagrid('reload');
				}
			}
		
		
		]

	});  


});

这个小案例就到此结束了,博友要是有什么疑问,可以进行交流讨论,欢迎留言





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值