利用JQuery发送ajax请求进行站内搜索(Hibernate篇——超简单系列)

此次任务是简单的一次hibernate框架小训练,利用上一篇的项目修改

1.导包,找到Hibernate-release-5.x.x.Final\lib\required下的所有包,copy到项目WEB-INF\lib下



2.开始编写数据库表(名字好烦,就乱取了)

//建表hibernate

create table my_hibernate(
`h_id` integer not null auto_increatment,
`h_name` varchar (255) null,
primary key (`h_id`)
) ;

//建表table

 create table my_table(
  `t_id` integer not null auto_increatment,
`t_name` varchar(255) null,
  primary key (`t_id`)
 );


3.创建实体类

MyTable类:(可以把上面my_table表语句复制过来,照着键名复制,以免出错)

import java.util.Set;

public class MyTable {
//	 create table my_table(
//			 `t_id` integer not null,
//			 `t_name` varchar(255) null,
//			 primary key (`t_id`)
//			 );
	private Integer t_id;
	private String t_name;
	public Integer getT_id() {
		return t_id;
	}
	public void setT_id(Integer t_id) {
		this.t_id = t_id;
	}
	public String getT_name() {
		return t_name;
	}
	public void setT_name(String t_name) {
		this.t_name = t_name;
	}
	private Set myHibernate;
	public Set getMyHibernate() {
		return myHibernate;
	}
	public void setMyHibernate(Set myHibernate) {
		this.myHibernate = myHibernate;
	}
	
	
}

MyHibernate类:

import java.util.Set;

public class MyHibernate {
//	create table my_hibernate(
//			`h_id` integer not null auto increatment,
//			`h_name` varchar (255) null,
//			primary key (`h_id`)
//		) 
	
	private Integer h_id;
	private String h_name;
	
	public Integer getH_id() {
		return h_id;
	}
	public void setH_id(Integer h_id) {
		this.h_id = h_id;
	}
	public String getH_name() {
		return h_name;
	}
	public void setH_name(String h_name) {
		this.h_name = h_name;
	}
	private Set myTable;
	public Set getMyTable() {
		return myTable;
	}
	public void setMyTable(Set myTable) {
		this.myTable = myTable;
	} 
	
}


4.在当前包下创建xml文件,编写orm映射类

MyHibernate.hbm.xml:(这里给的是多对多表关系



    
    	
    		
    			
    		
    		
    		
    			
    			
    		
    	
    
    

MyTable.hbm.xml:



    
    	
    		
    			
    		
    		
    		
    			
    			
    		
    	
    


5.编写hibernate.cfg.xml



	
		
			com.mysql.jdbc.Driver
			jdbc:mysql:///test
			root
			123
			org.hibernate.dialect.MySQLDialect
			
			true
			true
			
			update
			
			4
			thread
			
			
			
			
		
		
	

6.测试,创建test类,进行junit测试看看能否成功建表

package test;

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

import cn.zhku.jsjs.haofeng.domain.MyTable;

public class ProjectTest {
	@Test
	public void test(){
		Configuration conf = new Configuration().configure();
		SessionFactory SessionFactory = conf.buildSessionFactory();
		Session session = SessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		MyTable t1 = session.get(MyTable.class, 01);
		t1.setT_name("you not 1");
		session.save(t1);
		transaction.commit();
		session.close();
		SessionFactory.close();
	}
}
涂红两句是获取Mytable中id为01的记录,然后设置t_name为"you not 1"(在测试前在my_table表中插入一条t_id为01的数据即可)

就能看到table_hibernate被成功创建出来了,说明多对对关系创建成功


my_table表数据也被修改成功



7.接着,只用把上一篇的代码进行小小调整即可(红色部分即为调整地方

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here



	
	
	
	


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 com.google.gson.Gson;

import xxx.xxx.service.SearchHibernateService;

/**
 * Servlet implementation class ajaxServletHibernateTest
 */
public class ajaxServletHibernateTest extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ajaxServletHibernateTest() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//从前台获取json格式数据
				request.setCharacterEncoding("UTF-8");
				String content = (String) request.getParameter("content");
				//创建一个service类,并调用其查询方法
				SearchHibernateService ss = new SearchHibernateService();
				List list = null;
				list = ss.SearchHname(content);
				
				System.out.println(list);
				//将service返回的数据进行格式转换变成json
				//先创建一个Gson
				Gson gson = new Gson();
				//然后解析获得的list,把json转换成string
				String str = gson.toJson(list);
				response.setContentType("text/html;charset=UTF-8");
				response.getWriter().write(str);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

Service:(红色部分为添加的事务操作,绿色部分为修改类名或方法名)
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import cn.zhku.jsjs.haofeng.dao.SearchHibernateDao;
import cn.zhku.jsjs.haofeng.utils.HibernateUtils;

public class SearchHibernateService {
	public List SearchHname(String content){
		Session session = HibernateUtils.getCurrentSession();
		Transaction tx = session.beginTransaction();
		
		SearchHibernateDao shd = new SearchHibernateDao();
		List list = shd.searchHname(content);
		tx.commit();
		return list;
		
		
		
	}
}

Dao:( 这里就是hibernate的sql查询操作了
import java.util.List;

import org.hibernate.SQLQuery;
import org.hibernate.Session;

import cn.zhku.jsjs.haofeng.utils.HibernateUtils;

public class SearchHibernateDao {
	public List searchHname(String content){
		Session session = HibernateUtils.getCurrentSession();
		String sql = "select h_name from my_hibernate where h_name like '%"+content+"%'";
		SQLQuery query = session.createSQLQuery(sql);
		List list = query.list();
		return list;
	}
}

HibernateUtils:(把hibernate的启动,初始化,创建session操作的重复代码封装,封装了getOpenSession和getCurrentSession两个方法)

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


public class HibernateUtils {
	private static SessionFactory sf;
	static{
		Configuration conf = new Configuration().configure();
		sf = conf.buildSessionFactory();
	}
	
	public static Session getOpenSession(){
		
		Session session = sf.openSession();
		return session;
	}
	public static Session getCurrentSession(){
		Session session = sf.getCurrentSession();
		return session;
	}
}

把相关数据库服务是打开的,数据库用户名密码设置为自己的,往数据库中的my_hibernate表中填几个数据,就能实现上一篇的页面发送ajax请求进行站内搜索功能了!






你可能感兴趣的:(hibernate)