近段时间在学习hibernate,示例项目就使用hibernate框架。本文展示了添加部门信息的校验,因只是示例,部分bug就此忽略,不足之处还望指教。
一、项目路径
二、用到的JAR包
三、表现层ajax的code
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#dname").blur(function(){
var name=$("#dname").val();//获取输入值
$.ajax({
url:"GetDepartment",
type:'post',
data:{username:name},
dataType:'JSON',
success:function(result){
$.each(result,function(idx,department){
if(name==department.dname){
$("#yanzheng").html("部门名称已存在,请重新输入!");
return false;
}else{
$("#yanzheng").html("部门名称可用!");
}
})
}
})
})
})
</script>
四、表现层Html的Code
<!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 action="${pageContext.request.contextPath }/Insert" method="post">
username:<input type="text" name="dname" id="dname"/><span id="yanzheng"></span><br/>
password:<input type="text" name="loc" id="loc"/>
<input type="submit" value="提交" >
</form>
</body>
</html>
五、Servlet与JSON的Code
package cn.sunshine.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.sunshine.pojo.Department;
import cn.sunshine.service.DepartmentService;
import cn.sunshine.service.impl.DepartmentServiceImpl;
import net.sf.json.JSONArray;
/**
*
* GetDepartmentServlet.java
* 说明:获取后端传过来的数据,并封装给JSNO
* @author cn.sunshine.lxy
* 2018年6月29日
*/
public class GetDepartmentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static DepartmentService departmentService = new DepartmentServiceImpl();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String dname = request.getParameter("dname");
String loc = request.getParameter("loc");
List<Department> list = departmentService.getAllDepartment();
JSONArray array = JSONArray.fromObject(list);
response.getWriter().write(array.toString());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
六、业务层Code
package cn.sunshine.service.impl;
import java.util.List;
import cn.sunshine.dao.DepartmentDao;
import cn.sunshine.dao.impl.DepartmentDaoImpl;
import cn.sunshine.pojo.Department;
import cn.sunshine.service.DepartmentService;
/**
*
* DepartmentServiceImpl.java
* @author cn.sunshine.lxy
* 2018年6月29日
*/
public class DepartmentServiceImpl implements DepartmentService {
private static DepartmentDao departmentDao= new DepartmentDaoImpl();
public List<Department> getAllDepartment() {
List<Department> department = departmentDao.getAllDepartment();
return department;
}
public void insertDepartment(Department department) {
departmentDao.insertDepartment(department);
}
}
七、持久层code
package cn.sunshine.dao.impl;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.sunshine.dao.DepartmentDao;
import cn.sunshine.pojo.Department;
import cn.sunshine.utils.HibernateUtil;
/**
*
* DepartmentDaoImpl.java
* @author cn.sunshine.lxy
* 2018年6月29日
*/
public class DepartmentDaoImpl implements DepartmentDao {
public List<Department> getAllDepartment() {
Session session = HibernateUtil.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Department.class);
List<Department> list = criteria.list();
transaction.commit();
session.close();
System.out.println(list);
return list;
}
public void insertDepartment(Department department) {
Session session = HibernateUtil.openSession();
Transaction transaction = session.beginTransaction();
session.save(department);
transaction.commit();
session.close();
}
}
八、Hibernate工具类
package cn.sunshine.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
*
* HibernateUtil.java
* 说明:Hibernate工具类
* @author cn.sunshine.lxy
* 2018年6月28日
*/
public class HibernateUtil {
private static SessionFactory sessionFactory;
//加载配置文件,创建会话工厂
static {
Configuration config = new Configuration().configure();
sessionFactory = config.buildSessionFactory();
}
/**
*
* 方法说明:通过会话工厂打开会话
* @return session
*/
public static Session openSession() {
return sessionFactory.openSession();
}
public static Session currentSession() {
return sessionFactory.getCurrentSession();
}
}
九、Hibernate全局配置文件
<?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:///db_sunshine?characterEncoding=UTF-8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="cn/sunshine/mapper/Department.hbm.xml"/>
</session-factory>
</hibernate-configurat
十、Department实体类映射配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置的是类与表之间的映射
package:指定包名。在配置class标签的时候就可以直接写类名即可
-->
<hibernate-mapping package="cn.sunshine.pojo">
<class name="Department" table="department">
<id name="deptno" column="deptno" >
<generator class="native"></generator>
</id>
<property name="dname" column="dname" ></property>
<property name="loc" column="loc"></property>
</class>
</hibernate-mapping>
示例中省略了Dao层和Service层接口,相信根据展示聪明的你就能读懂!
写到这里本文也就结束了,一起加油,爱生活,爱编程!