Java字符串简化_关于java查询语句 如何简化的问题

首先,请你告诉我你使用PreparedStatement的理由,为什么不使用Statement?二者有什么区别?

然后 你用到了PreparedStatement的特性了吗?

接下来我们在探讨这代码该怎么写。下面的代码仅供参考,基本不具有实践意义。

public static void main(String[] args) {

Map params = new HashMap();

param.put("user_name", "小美");

param.put("mobile", "18712345678");

param.put("age", "33");

// 如果传递条件不限于相等,则如下

// param.put("nick_name like=?", "小李");

// param.put("age=?", "33");

query(params);

}

public List query(Map params) throws Exception{

List result=new ArrayList();

Connection conn=DBUtil.getConnection();

StringBuilder sb=new StringBuilder();

sb.append("select * from imooc_goddess");

if(params!=null && params.keySet().size() > 0){

sb.append(" where 1=1");

Set keySet = params.keySet();

for (String key : keySet) {

sb.append(" and "+key+"=?");

// 如果判断条件不是有等于可以如下

// sb.append(" and " + key);

}

}

PreparedStatement ptmt=conn.prepareStatement(sb.toString());

System.out.println(sb.toString());

if(params!=null && params.keySet().size() > 0){

Set keySet = params.keySet();

int index = 0;

for (String key : keySet) {

index++;

Object value = params.get(key);

if(value instanceof String){

ptmt.setString(index, (String)value);

}else if(value instanceof Integer){

ptmt.setInt(index, (Integer)value);

}else if(value instanceof Date){

ptmt.setTimestamp(index, new Timestamp(((Date)value).getTime()));

}else{

//......

}

}

}

ResultSet rs=ptmt.executeQuery();

Goddess g=null;

while(rs.next()){

g=new Goddess();

g.setId(rs.getInt("id"));

g.setUser_name(rs.getString("user_name"));

g.setAge(rs.getInt("age"));

g.setSex(rs.getInt("sex"));

g.setEmail(rs.getString("email"));

g.setMobile(rs.getString("mobile"));

result.add(g);

}

return result;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值