Java中如何传一个数组作为筛选条件操作数据库(sql中foreach的使用)

ぐ巨炮叔叔 提交于 2019-12-17 11:27:35

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

实现步骤:

1. 把前端获取到的要删除的数据的nId,以逗号作为分隔符,组成一个da(其中checkStatus.data.length和checkStatus.data[i].nId是layui里面的,不用的话替换为对应的数据就可以);

function(){
  var da = '';
  for(var i = 0; i < checkStatus.data.length; i++) {
    da += checkStatus.data[i].nId + "";
    if(i != checkStatus.data.length - 1) {
      da += ",";
	}
}

2. 将该da传递给后端接口;

$.ajax({
  url: path + "XXX/XXXXXXX",
  type: "post",
  dataType: "json",
  async: false,
  timeout: 5000,// 超时时间设置,单位毫秒
  data: {
    "ids": da,
    "u": u
  },
  contentType: "application/x-www-form-urlencoded;charset=utf-8",
  success: function(data) {
    ......
  },
  error: function(data){
    ......
  }
});

3. 然后针对传入的str进行解析,以split进行截取,将截取的值塞到定义的id;

/*判断ids是否为空*/
if(ids == null || "".equals(ids)) {
  json.put("status", -1);
  outp(out, json.toString());
  return ;
}
List<Long> list = new ArrayList<Long>();
if(ids.indexOf(",") > -1) {
  String[] id = ids.split(",");
  for(String string : id) {
    System.out.println(Long.parseLong(string));
    list.add(Long.parseLong(string));
  }
} else {
  list.add(Long.valueOf(ids));
}

4. 针对数据,在dao层进行sql的处理,通过sql的foreach方法进行处理;

for (Long id : nId) {
  pstmt.setLong(1, id);
  pstmt.addBatch();
}
pstmt.executeBatch();

5. 该方法最好设置回滚设置,这样保险点。

conn.setAutoCommit(false);/*关闭事务自动提交*/
conn.commit();

try {
  conn.rollback();
} catch(SQLException e1) {
  e1.printStackTrace();
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!