大家好,又见面了,我是你们的朋友全栈君。
最近项目用到PreparedStatement,根据输入条件查询数据,输入条件不为空,则参与查询,为空,则不参与查询。网上搜了,也是按照网上的方法,也不算原创,记录一下。
参考文章:https://blog.csdn.net/dream_broken/article/details/44681597/
代码如下:
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = FSJDBCUtil.getConnection();
StringBuffer sqlb = new StringBuffer("select * from table t where 1=1 ");
List<String> params = new ArrayList<String>();
if(StringUtil.isNotBlank(paramsA)){
sqlb.append(" and t.columA = ? ");
params.add(paramsA);
}
if(StringUtil.isNotBlank(paramsB)){
sqlb.append(" and t.columB like ? ");
params.add("%"+paramsB+"%");
}
ps = conn.prepareStatement(sqlb.toString());
int j=1;
for(String str:params){
ps.setString(j, str);
j++;
}
rs = ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
}finally{
FSJDBCUtil.close(rs, ps, conn);
}
对于参数类型不是同一类型的,处理办法:
List<Object> data = new ArrayList<Object>();
int j = 1;
for(Object obj:data){
if(obj instanceof Integer){
ps.setInt(j, (Integer)obj);
}else if(obj instanceof String){
ps.setString(j, (String)obj);
}
j++;
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137790.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...