/* * Copyright [duowan.com] * Web Site: http://www.duowan.com * Since 2005 - 2012 */ package com.fpcms.dao.impl; import static com.github.rapid.common.util.ObjectUtil.isNotEmpty; import java.util.List; 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.cache.Cache; import com.fpcms.common.cache.CacheManager; import com.fpcms.common.cache.ValueCallback; import com.fpcms.common.dao.BaseSpringJdbcDao; import com.fpcms.dao.CmsPropertyDao; import com.fpcms.model.CmsProperty; import com.fpcms.query.CmsPropertyQuery; /** * tableName: cms_property * [CmsProperty] 的Dao操作 * * @author badqiu email:badqiu(a)gmail.com * @version 1.0 * @since 1.0 */ public class CmsPropertyDaoImpl extends BaseSpringJdbcDao implements CmsPropertyDao{ private RowMapper<CmsProperty> entityRowMapper = new BeanPropertyRowMapper<CmsProperty>(getEntityClass()); static final private String COLUMNS = "prop_group,prop_key,prop_value,ramarks"; static final private String SELECT_FROM = "select " + COLUMNS + " from cms_property"; Cache cache = CacheManager.createCache(CmsPropertyDaoImpl.class,1000); @Override public Class<CmsProperty> getEntityClass() { return CmsProperty.class; } @Override public String getIdentifierPropertyName() { return "propGroup"; } public RowMapper<CmsProperty> getEntityRowMapper() { return entityRowMapper; } public void insert(CmsProperty entity) { String sql = "insert into cms_property " + " (prop_group,prop_key,prop_value,ramarks) " + " values " + " (:propGroup,:propKey,:propValue,:ramarks)"; // insertWithGeneratedKey(entity,sql); //for sqlserver:identity and mysql:auto_increment //其它主键生成策略 //insertWithOracleSequence(entity,"sequenceName",sql); //oracle sequence: //insertWithDB2Sequence(entity,"sequenceName",sql); //db2 sequence: //insertWithUUID(entity,sql); //uuid insertWithAssigned(entity,sql); //手工分配 cache.clear(); } public int update(CmsProperty entity) { cache.clear(); String sql = "update cms_property set " + " prop_value=:propValue,ramarks=:ramarks " + " where prop_group = :propGroup and prop_key = :propKey "; return getNamedParameterJdbcTemplate().update(sql, new BeanPropertySqlParameterSource(entity)); } public int deleteById(String propGroup, String propKey) { cache.clear(); String sql = "delete from cms_property where prop_group = ? and prop_key = ? "; return getSimpleJdbcTemplate().update(sql, propGroup,propKey); } public CmsProperty getById(String propGroup, String propKey) { String sql = SELECT_FROM + " where prop_group = ? and prop_key = ? "; return (CmsProperty)DataAccessUtils.singleResult(getSimpleJdbcTemplate().query(sql, getEntityRowMapper(),propGroup,propKey)); } public Page<CmsProperty> findPage(CmsPropertyQuery query) { StringBuilder sql = new StringBuilder("select "+ COLUMNS + " from cms_property where 1=1 "); if(isNotEmpty(query.getPropGroup())) { sql.append(" and prop_group = :propGroup "); } if(isNotEmpty(query.getPropKey())) { sql.append(" and prop_key = :propKey "); } if(isNotEmpty(query.getPropValue())) { sql.append(" and prop_value = :propValue "); } if(isNotEmpty(query.getRamarks())) { sql.append(" and ramarks = :ramarks "); } //sql.append(" order by :sortColumns "); return pageQuery(sql.toString(),query,getEntityRowMapper()); } @Override public List<CmsProperty> findByGroup(final String group) { return cache.get("findByGroup:"+group, 3600, new ValueCallback<List<CmsProperty>>() { public List<CmsProperty> create(String key) { return getSimpleJdbcTemplate().query(SELECT_FROM + " where prop_group = ?", getEntityRowMapper(),group); } }); } }