package com.baidu.dsp.common.dao; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import com.baidu.ub.common.db.DaoPage; import com.baidu.ub.common.db.DaoPageResult; import com.baidu.unbiz.common.genericdao.dao.GenericDao; import com.baidu.unbiz.common.genericdao.operator.Match; import com.baidu.unbiz.common.genericdao.operator.Modify; import com.baidu.unbiz.common.genericdao.operator.Order; import com.baidu.unbiz.common.genericdao.param.BetweenParam; import com.baidu.unbiz.common.genericdao.param.ExpressionParam; import com.baidu.unbiz.common.genericdao.param.GreaterThanParam; import com.baidu.unbiz.common.genericdao.param.IncrParam; import com.baidu.unbiz.common.genericdao.param.LessThanParam; import com.baidu.unbiz.common.genericdao.param.LikeParam; import com.baidu.unbiz.common.genericdao.param.NotParam; import com.github.knightliao.apollo.db.bo.BaseObject; /** */ public abstract class AbstractDao<KEY extends Serializable, ENTITY extends BaseObject<KEY>> extends GenericDao<KEY, ENTITY> { protected static final Logger LOG = LoggerFactory.getLogger(AbstractDao.class); @Override @Resource(name = "onedbJdbcTemplate") public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { super.setJdbcTemplate(jdbcTemplate); } public KEY getNextId() { // 好像没用到@Sequence注解 return null; } /** * 该类是否有dspId一列 */ public AbstractDao() { super(); } @Override public void recordLog(String sLog) { LOG.debug(sLog); } // modified by liqingyun protected Object like(String searchWord) { return new LikeParam(searchWord); } protected Object between(Object start, Object end) { return new BetweenParam(start, end); } protected Object greaterThan(Object value) { return new GreaterThanParam(value); } protected Object lessThan(Object value) { return new LessThanParam(value); } protected Object express() { return new ExpressionParam(); } protected Object not(Object value) { return new NotParam(value); } protected Object incr(Number value) { return new IncrParam(value); } public Order order(final String column, final boolean asc) { return new Order(column, asc); } public Match match(final String column, final Object value) { return new Match(column, value); } public Modify modify(String column, Object value) { return new Modify(column, value); } public final List<Object> toList(Object... os) { if (os == null || os.length == 0) { return new ArrayList<Object>(0); } ArrayList<Object> list = new ArrayList<Object>(os.length); for (Object o : os) { list.add(o); } return list; } /** * 新版的Page,返回TotalCount * * @param matches * @param daoPage * * @return */ public DaoPageResult<ENTITY> page2(List<Match> matches, DaoPage daoPage) { DaoPageResult<ENTITY> daoPageResult = new DaoPageResult<ENTITY>(); // 结果 List<ENTITY> result = page(matches, daoPage); daoPageResult.setResult(result); // 总数 int totalCount = count(matches); daoPageResult.setTotalCount(totalCount); return daoPageResult; } /** * 根据查询条件获取结果集列表 * * @param matches * * @return */ private List<ENTITY> page(List<Match> matches, DaoPage daoPage) { if (daoPage.getPageNo() < 1 || daoPage.getPageSize() < 0) { return find(matches, daoPage.getOrderList()); } int offset = (daoPage.getPageNo() - 1) * daoPage.getPageSize(); int limit = daoPage.getPageSize(); return find(matches, daoPage.getOrderList(), offset, limit); } }