首先我们需要下进行梳理,先了解一下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>
<?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');
}
}
]
});
});
这个小案例就到此结束了,博友要是有什么疑问,可以进行交流讨论,欢迎留言