派生自 projectDept/qhighschool

EricsHu
2023-02-28 660b072b084f3f765ff8bfcb1abdd7f1cd9ed068
src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java
@@ -1,8 +1,8 @@
/******************************************************************************
 * Copyright (C) 2015 Shenzhen Penguin Network Technology Co., Ltd
 * All Rights Reserved.
 * 本软件为深圳企鹅网络科技有限公司开发研制。未经本公司正式书面同意,其他任何个人、团体
 * 不得使用、复制、修改或发布本软件.
 * 本软件为深圳企鹅网络科技有限公司开发研制。未经本公司正式书面同意,其他任何个人、团体
 * 不得使用、复制、修改或发布本软件.
 *****************************************************************************/
package com.qxueyou.scc.base.dao;
@@ -31,19 +31,19 @@
import com.qxueyou.scc.base.model.Result;
/**
 * 基础DAO类,自动注入sessionFactory
 * 基础DAO类,自动注入sessionFactory
 *
 * @author 夏德虎
 * @author 夏德虎
 * @since JDK1.6
 * @history 2010-07-28 夏德虎 新建
 * @history 2010-07-28 夏德虎 新建
 */
public class BaseDAO extends HibernateDaoSupport {
   
   /** 注释 rawtypes  */
   /** 注释 rawtypes  */
   private static final String RAW_TYPES = "rawtypes";
   
    /**
     * 注入sessionFactory
     * 注入sessionFactory
     *
     * @param sessionFactory
     */
@@ -53,12 +53,12 @@
    }
    /**
     * 读取对象
     * 读取对象
     *
     * @param <T> 泛型类型
     * @param clz VO CLASS类型
     * @param key VO 主键
     * @return 查找到的结果,如果没找到,返回null
     * @param <T> 泛型类型
     * @param clz VO CLASS类型
     * @param key VO 主键
     * @return 查找到的结果,如果没找到,返回null
     */
    public <T> T read(Class<T> clz, Serializable key) {
       if(key==null){
@@ -68,28 +68,28 @@
    }
    /**
     * 保存对象
     * 保存对象
     */
    public void update(Object obj) {
        this.getHibernateTemplate().update(obj);
    }
    
    /**
     * 保存对象
     * 保存对象
     */
    public void save(Object obj) {
        this.getHibernateTemplate().save(obj);
    }
    /**
     * 保存或更新对象
     * 保存或更新对象
     */
    public void saveOrUpdate(Object obj) {
        this.getHibernateTemplate().saveOrUpdate(obj);
    }
    /**
     * 保存或更新集合对象
     * 保存或更新集合对象
     */
    public void saveOrUpdateAll(@SuppressWarnings(RAW_TYPES) Collection collection) {
        for(Object obj:collection){
@@ -98,17 +98,17 @@
    }
    /**
     * 保存或更新对象
     * 保存或更新对象
     */
    public void deleteAll(@SuppressWarnings(RAW_TYPES) Collection col) {
        this.getHibernateTemplate().deleteAll(col);
    }
    
    /**
     * 根据hql查询,并返回执行类型的列表结果
     * 根据hql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param cls 返回类型
     * @param hql 查询语句
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings("unchecked")
@@ -117,11 +117,11 @@
    }
    
    /**
     * 根据hql查询,并返回执行类型的列表结果
     * 根据hql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
   public <T> List<T> find(final String hql,final List<Object> args,final Class<T> cls) {
@@ -142,11 +142,11 @@
    }
    
    /**
     * 根据hql查询,并返回执行类型的列表
     * 根据hql查询,并返回执行类型的列表
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
   @SuppressWarnings("unchecked")
@@ -155,11 +155,11 @@
    }
    
    /**
     * 根据hql查询,返回列表数据总数
     * 根据hql查询,返回列表数据总数
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
   public int findCount(final String hql, final List<Object> args) {
@@ -184,11 +184,11 @@
    }
   
    /**
     * 根据hql查询,返回列表数据总数
     * 根据hql查询,返回列表数据总数
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
   public int findCountBySql(final String sql, final List<Object> args) {
@@ -213,11 +213,11 @@
    }
    
    /**
     * 根据hql查询,返回列表分页数据
     * 根据hql查询,返回列表分页数据
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({ "unchecked" })
@@ -238,11 +238,11 @@
    }
    
    /**
     * 根据hql查询,返回唯一的数据
     * 根据hql查询,返回唯一的数据
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({ RAW_TYPES, "unchecked" })
@@ -265,11 +265,11 @@
    }
    /**
     * 根据hql查询,并返回执行类型的列表结果
     * 根据hql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({ RAW_TYPES})
@@ -289,11 +289,11 @@
    }
    
    /**
     * 根据hql查询,并返回执行类型的列表结果
     * 根据hql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({ RAW_TYPES})
@@ -316,11 +316,11 @@
    
    
    /**
     * hql只含单一参数
     * hql只含单一参数
     *
     * @param hql 查询语句
     * @param args 参数数组
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数数组
     * @param cls 返回类型
     * @return
     */
    public Result bulkUpdateInLoop(String hql, Object args[]) {
@@ -336,11 +336,11 @@
    }
    
    /**
     * hql只含单一参数
     * hql只含单一参数
     *
     * @param hql 查询语句
     * @param args 参数数组
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数数组
     * @param cls 返回类型
     * @return
     */
    public Result bulkUpdate(String hql, Object args[]) {
@@ -353,10 +353,10 @@
    }
    
    /**
     * 存储过程语句
     * 存储过程语句
     *
     * @param hql call 存储语句 sql语句
     * @param args 参数数组
     * @param hql call 存储语句 sql语句
     * @param args 参数数组
     * @return
     */
   public Result executeProduce(final String sql, final Object args[]) {
@@ -379,10 +379,10 @@
    }
    
    /**
     * 执行sql删除
     * 执行sql删除
     *
     * @param hql 查询语句
     * @param args 参数数组
     * @param hql 查询语句
     * @param args 参数数组
     * @return
     */
   public int executeSqlDelete(final String sql, final Object args[]) {
@@ -404,16 +404,16 @@
    }
    
    /**
     * 根据hql查询,并返回执行类型的列表结果
     * 根据hql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({RAW_TYPES, "unchecked" })
    public List<Object[]> findRawByComplexHql(final String hql, final Map<String, Object> map) {
       // 查询结果
       // 查询结果
        return  (List<Object[]>)this.getHibernateTemplate().execute(new HibernateCallback<List>() {
            public List doInHibernate(Session session) {
                Query query = session.createQuery(hql);
@@ -421,7 +421,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                            query.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -438,11 +438,11 @@
    }   
    
    /**
     * 根据hql查询,返回列表数据总数
     * 根据hql查询,返回列表数据总数
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
   public int findCountByComplexHql(final String hql, final Map<String, Object> map) {
@@ -457,7 +457,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                           queryHql.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -478,11 +478,11 @@
    }
   
    /**
     * 根据sql查询,返回列表数据总数
     * 根据sql查询,返回列表数据总数
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
   public int findCountByComplexSql(final String hql, final Map<String, Object> map) {
@@ -497,7 +497,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                           querySql.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -518,11 +518,11 @@
    }
   
    /**
     * 根据hql查询,并返回执行类型的列表结果
     * 根据hql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    public <T> List<T> findByComplexHql(final String hql, final Map<String, Object> map, Class<T> cls) {
@@ -533,14 +533,14 @@
    }
    
    /**
     * 复杂hql
     * 复杂hql
     * @param sql
     * @param map
     * @param cls
     * @return
     */
    public <T> T findUniqueByHql(final String hql, final Map<String, Object> map){
       // 查询结果
       // 查询结果
        List<T> lst =  this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
           
            @SuppressWarnings("unchecked")
@@ -550,7 +550,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                           queryHql.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -578,10 +578,10 @@
    }
    
    /**
     * 根据hql查询,并返回执行类型的列表结果,列表数据为Map
     * 根据hql查询,并返回执行类型的列表结果,列表数据为Map
     *
     * @param hql 查询语句
     * @param args 参数
     * @param hql 查询语句
     * @param args 参数
     * @return
     */
    public List<Map<String,Object>> findListWithMapByHql(final String hql, final Map<String, Object> map) {
@@ -593,15 +593,15 @@
    }
    
    /**
     * 根据hql查询,并返回执行类型的列表结果,列表数据为Map
     * 根据hql查询,并返回执行类型的列表结果,列表数据为Map
     *
     * @param hql 查询语句
     * @param args 参数
     * @param hql 查询语句
     * @param args 参数
     * @return
     */
    @SuppressWarnings("unchecked")
    public List<Map<String,Object>> findListWithMapByHql(final String hql, final Map<String, Object> map,final Pager page) {
       // 查询结果
       // 查询结果
        List<Map<String,Object>> lst =  getHibernateTemplate().execute(new HibernateCallback<List<Map<String,Object>>>() {
         public List<Map<String,Object>> doInHibernate(Session session) {
                Query query = session.createQuery(hql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
@@ -609,7 +609,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                            query.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -630,16 +630,16 @@
    }
    
    /**
     * 根据hql查询,并返回唯一一条结果
     * 根据hql查询,并返回唯一一条结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({RAW_TYPES })
    public <T> T findUniqueByComplexHql(final String hql, final Map<String, Object> map, Class<T> cls) {
       // 查询结果
       // 查询结果
        List<T> lst =  this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
            public List doInHibernate(Session session) {
                Query query = session.createQuery(hql);
@@ -647,7 +647,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                            query.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -669,11 +669,11 @@
    
    /**
     * 根据Sql查询,并返回执行类型的列表结果
     * 根据Sql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    public <T> List<T> findByComplexSql(final String sql, final Map<String, Object> map, Class<T> cls) {
@@ -685,16 +685,16 @@
    
    
    /**
     * 根据Sql查询,并返回执行类型的列表结果
     * 根据Sql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({RAW_TYPES, "unchecked" })
    public List<Object[]> findRawByComplexSql(final String sql, final Map<String, Object> map) {
       // 查询结果
       // 查询结果
        return  (List<Object[]>)this.getHibernateTemplate().execute(new HibernateCallback<List>() {
            public List doInHibernate(Session session) {
                SQLQuery query = session.createSQLQuery(sql);
@@ -702,7 +702,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                            query.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -721,16 +721,16 @@
    }
    
    /**
     * 根据hql查询,并返回执行类型的列表结果
     * 根据hql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({RAW_TYPES })
    public <T> List<T> findByComplexHql(final String hql,final Pager page, final Map<String, Object> map, Class<T> cls) {
       // 查询结果
       // 查询结果
        List lst =  this.getHibernateTemplate().execute(new HibernateCallback<List>() {
            public List doInHibernate(Session session) {
                Query queryHql = session.createQuery(hql);
@@ -738,7 +738,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                           queryHql.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -755,7 +755,7 @@
        });
        
        // 组装结果
        // 组装结果
        List<T> result = new ArrayList<T>();
        for (Object obj : lst) {
            result.add(cls.cast(obj));
@@ -764,16 +764,16 @@
    }
    
    /**
     * 根据Sql查询,并返回执行类型的列表结果
     * 根据Sql查询,并返回执行类型的列表结果
     *
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @param hql 查询语句
     * @param args 参数
     * @param cls 返回类型
     * @return
     */
    @SuppressWarnings({RAW_TYPES })
    public <T> List<T> findByComplexSql(final String sql,final Pager page, final Map<String, Object> map, Class<T> cls) {
       // 查询结果
       // 查询结果
        List lst =  this.getHibernateTemplate().execute(new HibernateCallback<List>() {
            public List doInHibernate(Session session) {
                SQLQuery querySql = session.createSQLQuery(sql);
@@ -781,7 +781,7 @@
                    Set<String> keySet = map.keySet();  
                    for (String string : keySet) {  
                        Object obj = map.get(string);  
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        //这里考虑传入的参数是什么类型,不同类型使用的方法不同
                        if(obj instanceof Collection<?>){  
                           querySql.setParameterList(string, (Collection<?>)obj);  
                        }else if(obj instanceof Object[]){  
@@ -798,7 +798,7 @@
        });
        
        // 组装结果
        // 组装结果
        List<T> result = new ArrayList<T>();
        for (Object obj : lst) {
            result.add(cls.cast(obj));