java 封装的基类Springjdbc可以通用详解编程语言

package oa.common.dao; 
 
import java.util.List; 
 
import oa.common.model.PageModel; 
 
import org.springframework.jdbc.core.BeanPropertyRowMapper; 
import org.springframework.jdbc.core.RowMapper; 
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; 
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport; 
import org.springframework.jdbc.core.namedparam.SqlParameterSource; 
 
public abstract class BaseDAO<T> extends NamedParameterJdbcDaoSupport { 
 
    protected final static String PAGE_SQL_PREFIX = "select * from(select m.*,rownum num from ("; 
    protected final static String PAGE_SQL_END = ") m where rownum<=?) where num>?"; 
 
    /** 
     * 适用于更新数据库,insert,update, delete 
     *  
     * @param namedSql 
     *            :命名参数的SQL语句,而且参数的命名必须和JavaBean中的属性名对应 
     * @param javaBean 
     *            :javabean对象 
     * @return 
     */ 
    protected int update(String namedSql, Object javaBean) { 
        SqlParameterSource paramSource = new BeanPropertySqlParameterSource( 
                javaBean); 
        return this.getNamedParameterJdbcTemplate().update(namedSql,paramSource); 
    } 
 
    protected int commonUpdate(String sql, Object... paramValue) { 
        return this.getJdbcTemplate().update(sql, paramValue); 
    } 
 
    protected T getJavaBean(String sql, Class<T> returnType, 
            Object... paramValue) { 
        RowMapper<T> rowMapper = new BeanPropertyRowMapper<T>(returnType); 
        try{ 
        return this.getJdbcTemplate() 
                .queryForObject(sql, rowMapper, paramValue); 
        }catch(Exception ex){ 
            return null; 
        } 
    } 
 
    protected List<T> getList(String sql, Class<T> returnType, 
            Object... paramValue) { 
        RowMapper<T> rowMapper = new BeanPropertyRowMapper<T>(returnType); 
        return this.getJdbcTemplate().query(sql, rowMapper, paramValue); 
    } 
 
    protected List<T> getList(String sql, Class<T> returnType) { 
        RowMapper<T> rowMapper = new BeanPropertyRowMapper<T>(returnType); 
        return this.getJdbcTemplate().query(sql, rowMapper); 
    } 
 
    /** 
     * 计算总记录数 
     *  
     * @param countSQL 
     *            计算总记录数的count语句 
     * @param paramValue 
     *            语句中对应的参数值 
     * @return 总记录数 
     */ 
    protected int getCount(String countSQL, List paramValue) { 
        return this.getJdbcTemplate().queryForInt(countSQL, 
                paramValue.toArray()); 
    } 
 
    protected int getCount(String countSQL, Object... paramValue) { 
        return this.getJdbcTemplate().queryForInt(countSQL, paramValue); 
    } 
 
    protected PageModel getPageModel(PageModel model, 
            StringBuilder querySQL, StringBuilder countSQL, 
            StringBuilder whereSQL, List paramList, Class<T> returnType) { 
        querySQL.append(whereSQL); 
        countSQL.append(whereSQL); 
        // 计算总记录数 
        int allCount = this.getCount(countSQL.toString(), paramList); 
        // 获取分页记录集 
        // 1。构造完整的分页语句 
        querySQL.insert(0, PAGE_SQL_PREFIX); 
        querySQL.append(PAGE_SQL_END); 
 
        // 2.把分页语句中的参数值加入到paramList中 
        paramList.add(model.getNumPerPage()* model.getPageNum()); 
        paramList.add(( model.getPageNum() - 1) *model.getNumPerPage()); 
        List result = this.getList(querySQL.toString(), returnType, 
                paramList.toArray()); 
        PageModel models = new PageModel(); 
        models.setTotalCount(allCount); 
        models.setNumPerPage(model.getNumPerPage()); 
        models.setPageNum(model.getPageNum()); 
        models.setResult(result); 
        models.setOrderDirection(model.getOrderDirection()); 
        models.setOrderField(model.getOrderField()); 
        return models; 
    } 
} 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10402.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论