/*
* Copyright [duowan.com]
* Web Site: http://www.duowan.com
* Since 2005 - 2013
*/
package com.fpcms.dao.impl;
import static com.github.rapid.common.util.ObjectUtil.isEmpty;
import static com.github.rapid.common.util.ObjectUtil.isNotEmpty;
import java.util.Date;
import org.springframework.dao.support.DataAccessUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import com.github.rapid.common.util.page.Page;
import com.fpcms.common.dao.BaseSpringJdbcDao;
import com.fpcms.dao.CmsKeyValueDao;
import com.fpcms.model.CmsKeyValue;
import com.fpcms.query.CmsKeyValueQuery;
/**
* tableName: cms_key_value
* [CmsKeyValue] 的Dao操作
*
* @author badqiu email:badqiu(a)gmail.com
* @version 1.0
* @since 1.0
*/
public class CmsKeyValueDaoImpl extends BaseSpringJdbcDao implements CmsKeyValueDao{
private RowMapper<CmsKeyValue> entityRowMapper = new BeanPropertyRowMapper<CmsKeyValue>(getEntityClass());
static final private String COLUMNS = "date_created,key_group,str_key,value";
static final private String SELECT_FROM = "select " + COLUMNS + " from cms_key_value";
@Override
public Class<CmsKeyValue> getEntityClass() {
return CmsKeyValue.class;
}
@Override
public String getIdentifierPropertyName() {
return "keyGroup";
}
public RowMapper<CmsKeyValue> getEntityRowMapper() {
return entityRowMapper;
}
public void insert(CmsKeyValue entity) {
String sql = "insert into cms_key_value "
+ " (date_created,key_group,str_key,value) "
+ " values "
+ " (:dateCreated,:keyGroup,:strKey,:value)";
insertWithAssigned(entity,sql); //手工分配
}
public int update(CmsKeyValue entity) {
String sql = "update cms_key_value set "
+ " date_created=:dateCreated,value=:value "
+ " where key_group = :keyGroup and str_key = :strKey ";
return getNamedParameterJdbcTemplate().update(sql, new BeanPropertySqlParameterSource(entity));
}
public int deleteById(String keyGroup, String key) {
String sql = "delete from cms_key_value where key_group = ? and str_key = ? ";
return getSimpleJdbcTemplate().update(sql, keyGroup,key);
}
public CmsKeyValue getById(String keyGroup, String key) {
String sql = SELECT_FROM + " where key_group = ? and str_key = ? ";
return (CmsKeyValue)DataAccessUtils.singleResult(getSimpleJdbcTemplate().query(sql, getEntityRowMapper(),keyGroup,key));
}
// public int deleteBy(String keyGroup, Date dateCreated) {
// String sql = "delete from cms_key_value where key_group = ? and date_created >= ? ";
// return getSimpleJdbcTemplate().update(sql, keyGroup,dateCreated);
// }
public int deleteBy(Date beforeDateCreated) {
String sql = "delete from cms_key_value where date_created <= ? ";
return getSimpleJdbcTemplate().update(sql,beforeDateCreated);
}
public Page<CmsKeyValue> findPage(CmsKeyValueQuery query) {
StringBuilder sql = new StringBuilder("select "+ COLUMNS + " from cms_key_value where 1=1 ");
if(isNotEmpty(query.getDateCreatedBegin())) {
sql.append(" and date_created >= :dateCreatedBegin ");
}
if(isNotEmpty(query.getDateCreatedEnd())) {
sql.append(" and date_created <= :dateCreatedEnd ");
}
if(isNotEmpty(query.getKeyGroup())) {
sql.append(" and key_group = :keyGroup ");
}
if(isNotEmpty(query.getStrKey())) {
sql.append(" and str_key = :strKey ");
}
if(isNotEmpty(query.getValue())) {
sql.append(" and value = :value ");
}
if(isEmpty(query.getSortColumns())) {
query.setSortColumns("key_group,date_created desc");
}
sql.append(" order by :sortColumns ");
return pageQuery(sql.toString(),query,getEntityRowMapper());
}
}