/*
* 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.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.dao.BaseSpringJdbcDao;
import com.fpcms.dao.CmsDomainDao;
import com.fpcms.model.CmsDomain;
import com.fpcms.query.CmsDomainQuery;
/**
* tableName: cms_domain
* [CmsDomain] 的Dao操作
*
* @author badqiu email:badqiu(a)gmail.com
* @version 1.0
* @since 1.0
*/
public class CmsDomainDaoImpl extends BaseSpringJdbcDao implements CmsDomainDao{
private RowMapper<CmsDomain> entityRowMapper = new BeanPropertyRowMapper<CmsDomain>(getEntityClass());
static final private String COLUMNS = "domain,remarks,props,ip";
static final private String SELECT_FROM = "select " + COLUMNS + " from cms_domain";
@Override
public Class<CmsDomain> getEntityClass() {
return CmsDomain.class;
}
@Override
public String getIdentifierPropertyName() {
return "domain";
}
public RowMapper<CmsDomain> getEntityRowMapper() {
return entityRowMapper;
}
public void insert(CmsDomain entity) {
String sql = "insert into cms_domain "
+ " (domain,remarks,props,ip) "
+ " values "
+ " (:domain,:remarks,:props,:ip)";
// 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); //手工分配
}
public int update(CmsDomain entity) {
String sql = "update cms_domain set "
+ " remarks=:remarks,props=:props,ip=:ip "
+ " where domain = :domain ";
return getNamedParameterJdbcTemplate().update(sql, new BeanPropertySqlParameterSource(entity));
}
public int deleteById(String domain) {
String sql = "delete from cms_domain where domain = ? ";
return getSimpleJdbcTemplate().update(sql, domain);
}
public CmsDomain getById(String domain) {
String sql = SELECT_FROM + " where domain = ? ";
return (CmsDomain)DataAccessUtils.singleResult(getSimpleJdbcTemplate().query(sql, getEntityRowMapper(),domain));
}
public CmsDomain getByRemarks(String remarks) {
String sql = SELECT_FROM + " where remarks=?";
return (CmsDomain)DataAccessUtils.singleResult(getSimpleJdbcTemplate().query(sql, getEntityRowMapper(), remarks));
}
public Page<CmsDomain> findPage(CmsDomainQuery query) {
StringBuilder sql = new StringBuilder("select "+ COLUMNS + " from cms_domain where 1=1 ");
if(isNotEmpty(query.getDomain())) {
sql.append(" and domain = :domain ");
}
if(isNotEmpty(query.getRemarks())) {
sql.append(" and remarks = :remarks ");
}
if(isNotEmpty(query.getProps())) {
sql.append(" and props = :props ");
}
if(isNotEmpty(query.getIp())) {
sql.append(" and ip = :ip ");
}
if(isEmpty(query.getSortColumns())) {
query.setSortColumns("ip desc,domain desc");
}
sql.append(" order by "+query.getSortColumns());
return pageQuery(sql.toString(),query,getEntityRowMapper());
}
@Override
public List<CmsDomain> findAll() {
return getSimpleJdbcTemplate().query(SELECT_FROM, getEntityRowMapper());
}
}