记录一下,可用于根据不同条件来进行查询,都是或操作,只要有一个条件就可以。
/**
* 条件查询商品信息
*
* @param proId
* 编号
* @param proName
* 名称
* @param proType
* 类型
* @param proPriceS
* 开始价格
* @param proPriceE
* 结束价格
* @return
*/
public List<ProductEntity> queryProductByCondition(String proId,
String proName, String proType, float proPriceS, float proPriceE) {
List<ProductEntity> list = new ArrayList<ProductEntity>();
// 获得数据库连接
Connection conn = DBUtil.getConnection();
// 数据库操作SQL语句
String sql = " select * from product where 1=1 ";
// 参数列表
List<String> params = new ArrayList<String>();
// 判断编号是否有效
if(null != proId && !"".equals(proId)){
sql+= " and proId like ? ";
params.add("%"+proId+"%");
}
// 判断名称是否有效
if(null != proName && !"".equals(proName)){
sql+= " and proName like ? ";
params.add("%"+proName+"%");
}
// 判断类型是否有效
if(null != proType && !"".equals(proType)){
sql+= " and proType = ? ";
params.add(proType);
}
// 判断开始价格是否有效
if(proPriceS>=0){
sql+= " and proPrice >= ? ";
params.add(proPriceS+"");
}
// 判断结束价格是否有效
if(proPriceE>0){
sql+= " and proPrice <= ? ";
params.add(proPriceE+"");
}
System.out.println(sql);
try {
// 获得操作对象
PreparedStatement pstmt = conn.prepareStatement(sql);
// 设置参数
for (int i = 1; i <= params.size(); i++) {
pstmt.setString(i, params.get(i-1));
}
// 执行查询
ResultSet rs = pstmt.executeQuery();
// 遍历结果集,封装数据到集合中
while (rs.next()) {
ProductEntity pe = new ProductEntity();
pe.setProId(rs.getString(1));
pe.setProName(rs.getString(2));
pe.setProType(rs.getString(3));
pe.setProPrice(rs.getFloat(4));
pe.setProStore(rs.getInt(5));
pe.setProSale(rs.getInt(6));
pe.setProPicture(rs.getString(7));
pe.setProDesc(rs.getString(8));
// 添加实体到集合中
list.add(pe);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}