欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

封装的基类Springjdbc可以通用,封装springjdbc,package oa.c

来源: javaer 分享于  点击 45242 次 点评:144

封装的基类Springjdbc可以通用,封装springjdbc,package oa.c


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;    }}//该片段来自于http://byrx.net
相关栏目:

用户点评