java网站建设6-封装Springjdbc的通用基类

来源:互联网 发布:js的transitionend 编辑:程序博客网 时间:2024/06/08 11:26
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;}}
原创粉丝点击