数据库查询

数据库查询的语句 都写在 dao 里,注(不要再写到 service,action 里)
在dao 写一个 大查询(方法包含所有model对象的所有属性),serice 用重写的方法 调用 dao
如 ServicelogExtraColumnDao
有一个方法
public List<ServicelogExtraColumn> getAllObject(Long operationId,String columnName,String displayName,Integer status,String systemId)
上面的参数都是 ServicelogExtraColumn对象的 所有属性
实现请看 附件
ServicelogExtraColumnService 通过重写 方法。调用dao
public ServicelogExtraColumn findByExtraColumn(String columnName, Long operationId,String systemId) {
List<ServicelogExtraColumn> list=servicelogExtraColumnDao.getAllObject(operationId, columnName,null,1, systemId);
if(list != null && !list.isEmpty()){
return list.get(0);
}
return null;
}
实现:
private final static String COLUMN_OPERATION_ID="operation_id";
private final static String COLUMN_COLUMN_NAME="column_name";
private final static String COLUMN_DISPLAY_NAME="display_name";
private final static String COLUMN_STATUS="status";
private final static String COLUMN_SYSTEM_ID="system_id";

private final static String COND_WHERE=" where ";

/* (non-Javadoc)
* @see com.trendcom.log.dao.ServicelogExtraColumnDao#getAllObject(java.lang.Long, java.lang.String, java.lang.String, java.lang.Integer, java.lang.String)
*/
public List<ServicelogExtraColumn> getAllObject(Long operationId, String columnName, String displayName, Integer status, String systemId) {
Map<String,Object> map=new HashMap<String, Object>();
map.put(COLUMN_OPERATION_ID,operationId);
map.put(COLUMN_COLUMN_NAME,columnName);
map.put(COLUMN_DISPLAY_NAME,displayName);
map.put(COLUMN_STATUS,status);
map.put(COLUMN_SYSTEM_ID,systemId);
String sql=getSQL(map);
return findBySql(sql,"t",ServicelogExtraColumn.class);
}


private String getSQL(Map<String,Object> map){
boolean isExistWhere=false;
StringBuffer buffer=new StringBuffer(" select t.* from servicelog_extra_column t ");
Object operationId=map.get(COLUMN_OPERATION_ID);
Object columnName=map.get(COLUMN_COLUMN_NAME);
Object displayName=map.get(COLUMN_DISPLAY_NAME);
Object status=map.get(COLUMN_STATUS);
Object systemId=map.get(COLUMN_SYSTEM_ID);
if(isNotNull(operationId)){
buffer.append(" where t.operation_id=").append(operationId);
isExistWhere=true;
}
if(!isExistWhere){
buffer.append(" where ");
}
if(isNotNull(columnName)){
buffer.append(" and column_name='").append(columnName).append("'");
}
if(isNotNull(displayName)){
buffer.append(" and display_name='").append(displayName).append("'");
}
if(isNotNull(status)){
buffer.append(" and status=").append(status);
}
if(isNotNull(systemId)){
buffer.append(" and system_id='").append( systemId).append("'");
}
return buffer.toString();
}

private boolean isNotNull(Object obj){
if(obj == null || StringUtils.isBlank(obj.toString())){
return false;
}
return true;
}
好处:
以后如表结构 修改 增加 列,这样只要 修改 dao 的接口
重写一个方法。要不就再加入一个参数.而且 对 sql 的调试方便
不好:
面向过程开发了.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值