java网站建设6-封装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;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值