package com.jiisb.app.dao;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class BaseDao {
@Autowired
private SessionFactory sessionFactory;
private Session
getSession(){
return sessionFactory.getCurrentSession();
}
/**
* 执行实体对象的保存
* @param obj
*/
public void save(Object obj){
Session s=getSession();
s.save(obj);
}
/**
* 修改某对象
* @param obj
*/
public void update(Object obj){
Session s=getSession();
s.update(obj);
}
/**
* 根据hql返回列表
* @param hql
* @param params 参数列表
* @return
*/
public List
list(String hql,Object...params){
Session s=getSession();
Query q = s.createQuery(hql);
if(params!=
null&¶ms.length>
0){
for(
int i=
0;i<params.length;i++){
q.setParameter(i, params[i]);
}
}
return q.list();
}
/**
* 根据Id主键获得对象
* @param clz
* @param id
* @return
*/
public Object
getById(Class clz,Serializable id){
Session s=getSession();
return s.get(clz, id);
}
/**
* 返回整型结果,可以用于查询记录数,例如 select count(noid) from article
* @param hql
* @param params
* @return
*/
public Integer
getInt(String hql,Object...params){
Object obj=getObject(hql,params);
if(obj==
null){
return null;
}
if(Integer.class.isAssignableFrom(obj.getClass())){
return (Integer)obj;
}
else if(Long.class.isAssignableFrom(obj.getClass())){
return ((Long)obj).intValue();
}
else{
return null;
}
}
/**
* 根据hql执行,返回一条对象
* @param hql
* @param params
* @return
*/
public Object
getObject(String hql,Object...params){
List lst=page(hql,
1,
1,params);
if(lst!=
null&&lst.size()>
0){
return lst.get(
0);
}
return null;
}
/**
* 分页查询
* @param hql
* @param page 第几页,第一页的值为1
* @param rows 每页几条,默认为10条
* @param params
* @return
*/
public List
page(String hql,Integer page,Integer rows,Object...params){
if(page==
null||page<
1){
page=
1;
}
if(rows==
null||rows<
1){
rows=
10;
}
Session s=getSession();
Query q = s.createQuery(hql);
if(params!=
null&¶ms.length>
0){
for(
int i=
0;i<params.length;i++){
q.setParameter(i, params[i]);
}
}
q.setFirstResult((page-
1)*rows);
q.setMaxResults(rows);
return q.list();
}
/**
* 执行hql,主要是update和delete语句,hql不支持insert语句
* @param hql
* @param params
*/
public void execHql(String hql,Object...params){
Session s=getSession();
Query q = s.createQuery(hql);
if(params!=
null&¶ms.length>
0){
for(
int i=
0;i<params.length;i++){
q.setParameter(i, params[i]);
}
}
q.executeUpdate();
}
/**
* 根据原生sql查询list
* @param sql
* @param params
* @return
*/
public List<Map<String,Object>>
lstBySQL(String sql,Object ...params){
Session s=getSession();
Query q = s.createSQLQuery(sql);
if(params!=
null&¶ms.length>
0){
for(
int i=
0;i<params.length;i++){
q.setParameter(i, params[i]);
}
}
q.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
return q.list();
}
/**
* 原生SQL分页查询
* @param sql
* @param page
* @param rows
* @param params
* @return
*/
public List<Map<String,Object>>
pageBySQL(String sql,Integer page,Integer rows,Object...params){
Session s=getSession();
Query q = s.createSQLQuery(sql);
if(params!=
null&¶ms.length>
0){
for(
int i=
0;i<params.length;i++){
q.setParameter(i, params[i]);
}
}
q.setFirstResult((page-
1)*rows);
q.setMaxResults(rows);
q.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
return q.list();
}
/**
* 根据原生SQL获得一个map
* @param sql
* @param params
* @return
*/
public Map<String,Object>
getMapBySQL(String sql,Object...params){
List<Map<String,Object>> lst=page(sql,
1,
1,params);
if(lst!=
null&&lst.size()>
0){
return lst.get(
0);
}
return null;
}
public Integer
getIntBySQL(String sql,Object...params){
Session s=getSession();
Query q = s.createSQLQuery(sql);
if(params!=
null&¶ms.length>
0){
for(
int i=
0;i<params.length;i++){
q.setParameter(i, params[i]);
}
}
q.setFirstResult(
0);
q.setMaxResults(
1);
q.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
Object obj= q.uniqueResult();
if(obj==
null){
return null;
}
if(Integer.class.isAssignableFrom(obj.getClass())){
return (Integer)obj;
}
else if(Long.class.isAssignableFrom(obj.getClass())){
return ((Long)obj).intValue();
}
else{
return null;
}
}
/**
* 执行原生的SQL
* @param sql
* @param params
*/
public void execSQL(String sql,Object...params){
Session s=getSession();
Query q = s.createSQLQuery(sql);
if(params!=
null&¶ms.length>
0){
for(
int i=
0;i<params.length;i++){
q.setParameter(i, params[i]);
}
}
q.executeUpdate();
}
}
转载请注明原文地址: https://ju.6miu.com/read-500222.html