📄 hibernatedao.java
字号:
package com.y2.hr.human.common;
import java.util.List;
import org.springframework.beans.AbstractPropertyAccessor;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
* 执行数据库操作的抽象类,所有方法均为静态方法
*
* @author Rocky
*
*/
public abstract class HibernateDAO {
/**
* 查询记录数量,(主要用于提供分页参数)
*
* @param ses
* @param hql
* @param params
* @return
*/
public static int searchCount(Session ses, String hql, Object... params) {
return (Integer) uniqueSearch(ses, hql, params);
}
/**
* 根据HQL查询语句查询
*
* @param ses
* @param hql
* @param params
* @return 结果集
*/
public static List search(Session ses, String hql, Object... params) {
Query q = ses.createQuery(hql);
setValues(q, params);
List list = q.list();
ses.close();
return list;
}
/**
* 根据HQL查询语句查询
*
* @param ses
* @param hql
* @param params
* @return 返回唯一的实体信息
*/
public static Object uniqueSearch(Session ses, String hql, Object... params) {
Query q = ses.createQuery(hql);
setValues(q, params);
Object obj = q.uniqueResult();
ses.close();
return obj;
}
/**
* 执行非查询操作
*
* @param ses
* @param hql
* @param params
* @return 返回影响的行数
*/
public static int execute(Session ses, String hql, Object... params) {
Query q = ses.createQuery(hql);
setValues(q, params);
int result = 0;
try {
result = q.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
} finally {
ses.close();
}
return result;
}
/**
* 执行添加操作
*
* @param ses
* @param item
* @return
*/
public static boolean add(Session ses, Object item) {
boolean flag = false;
Transaction tx = ses.beginTransaction();
try {
ses.save(item);
tx.commit();
flag = true;
} catch (Exception e) {
// TODO: handle exception
tx.rollback();
e.printStackTrace();
} finally {
ses.close();
}
return flag;
}
/**
* 执行修改操作
*
* @param ses
* @param item
* @return
*/
public static boolean update(Session ses, Object item) {
boolean flag = false;
Transaction tx = ses.beginTransaction();
try {
ses.update(item);
tx.commit();
flag = true;
} catch (Exception e) {
// TODO: handle exception
tx.rollback();
e.printStackTrace();
} finally {
ses.close();
}
return flag;
}
/**
* 执行删除操作
*
* @param ses
* @param item
* @return
*/
public static boolean delete(Session ses, Object item) {
boolean flag = false;
Transaction tx = ses.beginTransaction();
try {
ses.delete(item);
tx.commit();
flag = true;
} catch (Exception e) {
// TODO: handle exception
tx.rollback();
e.printStackTrace();
} finally {
ses.close();
}
return flag;
}
/**
* 执行分页查询操作
*
* @param pageSize
* 每页放几条(页面记录的条数)
* @param pageId
* 第几页(页码)
* @param ses
* @param hql
* @param params
* @return
*/
public static List paginationSearch(int pageSize, int pageId, Session ses,
String hql, Object... params) {
Query q = ses.createQuery(hql);
setValues(q, params);
q.setFirstResult(pageSize * (pageId - 1));
q.setMaxResults(pageSize);
List list = q.list();
ses.close();
return list;
}
public static boolean executeUpdate(Session ses, String hql,
Object... params) {
// TODO Auto-generated method stub
Query q = ses.createQuery(hql);
setValues(q, params);
int rs = q.executeUpdate();
ses.close();
return rs == 0 ? false : true;
}
/**
* 为HQL语句变量赋值
*
* @param q
* @param params
*/
public static void setValues(Query q, Object... params) {
if (params == null) {
return;
}
for (int i = 0; i < params.length; i++) {
q.setParameter(i, params[i]);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -