package com.ekexiu.portal.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.jfw.apt.annotation.Nullable; import org.jfw.apt.orm.annotation.dao.DAO; import org.jfw.apt.orm.annotation.dao.method.OrderBy; import org.jfw.apt.orm.annotation.dao.method.operator.Insert; import org.jfw.apt.orm.annotation.dao.method.operator.SelectList; import org.jfw.apt.orm.annotation.dao.method.operator.SelectOne; import com.ekexiu.portal.po.Demand; @DAO public abstract class DemandDao { @Insert public abstract int insert(Connection con,Demand demand)throws SQLException; @SelectOne @Nullable public abstract Demand queryOne(Connection con,String demandId)throws SQLException; @SelectList @OrderBy("ORDER BY CREATE_TIME DESC") public abstract List queryByDemander(Connection con,String demander)throws SQLException; public List queryByStatus(Connection con,String demandStatus,String demandAim,String subject,String industry,String createTime,long orderKey,int rows,int sortType) throws SQLException{ StringBuilder sql = new StringBuilder(); sql.append("SELECT DEMAND_ID,DEMANDER,DEMAND_AIM,DEMAND_TYPE,DEMAND_TITLE,DEMAND_CONTENT,DEMAND_STATUS,ORDER_KEY,CREATE_TIME FROM DEMAND "); boolean hasDemandAim = null != demandAim; boolean hasSubject = null !=subject; boolean hasIndustry = null != industry; sql.append(" WHERE DEMAND_STATUS = ? AND ORDER_KEY < ? AND CREATE_TIME < ? "); if(hasDemandAim){ sql.append(" AND DEMAND_AIM = ? "); } if(hasSubject){ sql.append(" AND DEMAND_ID IN (SELECT DEMAND_ID FROM DEMAND_SUB_OR_INDUS WHERE SUB_OR_INDUS LIKE ?) "); } if(hasIndustry){ sql.append(" AND DEMAND_ID IN (SELECT DEMAND_ID FROM DEMAND_SUB_OR_INDUS WHERE SUB_OR_INDUS LIKE ?) "); } sql.append(" ORDER BY CREATE_TIME "); if(sortType == 0){ sql.append(" DESC "); } sql.append(" ,ORDER_KEY "); if(sortType == 0){ sql.append(" DESC "); } sql.append(" LIMIT ").append(rows); int index = 1; PreparedStatement ps = con.prepareStatement(sql.toString()); try{ ps.setString(index++, demandStatus); ps.setLong(index++,orderKey); ps.setString(index++,createTime); if(hasDemandAim){ ps.setString(index++,demandAim); } if(hasSubject){ ps.setString(index++,subject); } if(hasIndustry){ ps.setString(index++,industry); } ResultSet rs = ps.executeQuery(); try{ List _result = new ArrayList(); while(rs.next()){ Demand demand = new Demand(); demand.setDemandId(rs.getString(1)); demand.setDemander(rs.getString(2)); demand.setDemandAim(rs.getString(3)); demand.setDemandType(rs.getString(4)); demand.setDemandTitle(rs.getString(5)); String content = rs.getString(6); if(rs.wasNull()){ content = null; } demand.setDemandContent(content); demand.setDemandStatus(rs.getString(7)); demand.setOrderKey(rs.getLong(8)); demand.setCreateTime(rs.getString(9)); _result.add(demand); } return _result; }finally{ try{rs.close();}catch(Exception e1){} } }finally{ try{ps.close();}catch(Exception e2){} } } }