您的位置:首页 > 其它

hibernate的内置方法Hql查询

2013-04-25 17:10 274 查看
1.hibernate的工具类

/**

  * 根据记录的id查询一条记录

  *

  * @param obj要查询的对象所属类的class

  * @param id要查询的数据id

  * @return返回查询出的对象

  */

 public <T> T queryOne(Class obj, Serializable id) {

  Session session = null;

  T object = null;

  try {

   session = factory.openSession();

   object = (T) session.get(obj, id); // 根据id得到某条记录封装到对象中

  } catch (Exception e) {

   // TODO: handle exception

  } finally {

   if (session != null) {

    session.close();

   }

  }

  return object;

 }

 

/**

  * 添加记录

  *

  * @param obj添加的对象

  * @return返回是否成功

  */

 public boolean add(Object obj) {

  return Update(obj, "save");

 }

 /**

  * 删除记录

  *

  * @param obj

  *            包含要删除记录ID的对象

  * @return返回是否添加成功

  */

 public boolean delete(Object obj) {

  return Update(obj, "delete");

 }

 /**

  * 更新某条记录

  *

  * @param obj

  *            需要修改记录对应的对象

  * @return返回是否修改成功

  */

 public boolean Alert(Object obj) {

  return Update(obj, "alert");

 }

 /**

  * @param obj要更新的某个数据对象

  * @param type要执行的操作该类中定义类型SAVE

  *            、Alert、DELETE

  * @return

  */

 private boolean Update(Object obj, String type) {

  boolean isok = false;

  Session session = null;

  Transaction tran = null;

  try {

   session = factory.openSession();  // 得到会话

   tran = session.beginTransaction();   // 开启一个事物

   if ("save".equals(type))

    session.save(obj);     // 保存对象

   else if ("alert".equals(type)) {

    session.update(obj);    // 更新对象

   } else if ("delete".equals(type))

    session.delete(obj);    // 删除对象

   tran.commit();       // 提交事物

   isok = true;

  } catch (Exception e) {

   if (tran != null)

    tran.rollback();     // 回滚事物

   e.printStackTrace();

  } finally {

   if (session != null)

    session.close();     // 关闭会话

  }

  return isok;

  

 }

/** 这边只给出实现类的代码*/

2.dao.impl

package dao.impl;

import java.util.List;

import javax.annotation.Resource;

import org.hibernate.HibernateException;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.Transaction;

import org.springframework.stereotype.Repository;

import util.HibernateUtil;

import dao.BaseDao;

/**

 * @author ckl

 * @version1.0

 *基出Dao类

 */

@Repository

public class BaseDaoImpl implements BaseDao {

 @Resource

 private HibernateUtil hc;

 

public <T> T get(Class<T> entityClass, Integer id) {

  // TODO Auto-generated method stub

  return hc.queryOne(entityClass, id);

 }

 public <T> boolean delete(T t) {

  // TODO Auto-generated method stub

  return hc.delete(t);

 }

   public <T> boolean add(T t) {

  // TODO Auto-generated method stub

  return hc.add(t);

 }

 public <T> boolean alert(T t) {

  // TODO Auto-generated method stub

  return hc.alert(t);

 }

  }

 

3.biz.impl

package biz.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import dao.BaseDao;

import entity.P_Login;

import biz.LoginBiz;

@Service

public class LoginBizImpl implements LoginBiz {

 

 @Resource

 private BaseDao baseDao;

 public BaseDao getBaseDao() {

  return baseDao;

 }

 public void setBaseDao(BaseDao baseDao) {

  this.baseDao = baseDao;

 }

public P_Login get(int id) {

  // TODO Auto-generated method stub

  return baseDao.get(P_Login.class, id);

 }

 public boolean add(P_Login l) {

  // TODO Auto-generated method stub

    return baseDao.add(l);

 }

 

 public boolean alert(P_Login l) {

  // TODO Auto-generated method stub

  return baseDao.alert(l);

 }

public boolean delete(P_Login l) {

  // TODO Auto-generated method stub

  return baseDao.delete(l);

 }

}

4.Action类

package action;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import entity.P_Login;

import biz.LoginBiz;

@Controller

public class UpdateAction {

 private String message;

 private P_Login login;

 

 

 public P_Login getLogin() {

  return login;

 }

 public void setLogin(P_Login login) {

  this.login = login;

 }

 public String getMessage() {

  return message;

 } 

 public void setMessage(String message) {

  this.message = message;

 }

 @Resource

 private LoginBiz biz;

 public LoginBiz getBiz() {

  return biz;

 }

 public void setBiz(LoginBiz biz) {

  this.biz = biz;

 }

 public String alert() {

  boolean ok=biz.alert(login);

  if(ok){

   setMessage("修改成功!");

   return "success";

  }else{

   setMessage("修改失败!");

   return "faile";

  }

 }  

public String delete() {

  boolean ok = biz.delete(login);

  if (ok) {

   setMessage("删除成功!");

   return "success";

  } else {

   setMessage("删除失败!");

   return "faile";

  }

 }

/**get的方法就不实现了*/

public String add(){

 boolean ok=biz.add(login);

 if(ok){

  setMessage("注册成功!");

  return "success";

 }else{

  setMessage("注册失败!");

  return "faile";

  

 }

 }

}

 

说明:1.不用担心没有书写sql语句而担心程序执行不成功,hibernate已经很完美的帮你执行了sql语句。

            2.所有的代码都是基于三大框架(ssh)有的代码用了注解,重要看方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hibernate