今天在实现客户删除的时候,碰到了无法批量删除的原因,然后百度了一下
用find_in_set函数()解决了,记录一下
find_in_set是精确匹配,字段值以英文”,”分隔,
语法为:
FIND_IN_SET(str,strlist)
//str 要查询的字符串
//strlist 字段名 参数以”,”分隔 如 (1,2,6,8)
//查询字段(strlist)中包含(str)的结果,返回结果为null或记录
下面举一个简单例子:
假设通过request.getParameterValues()获取jsp页面的复选框,复选框传值为id,返回值为string数组
但FIND_IN_SET(str,strlist)的strlist格式为”value1,value2,…”格式,所以我们进行字符串处理
String[] order_ids = request.getParameterValues("orderId");
//对传值进行字符串处理,如:"100007,100008"
StringBuffer order_idss = new StringBuffer();
for(int i = 0; i < order_ids.length; i++)
{
order_idss. append(order_ids[i]);
if(i != order_ids.length - 1) {
order_idss. append(",");
}
}
String order_id = order_idss.toString();
处理之后传给dao层
通过\”转义字符实现拼接,假设传值为”1000067,100008″
那么如下sql语句就为delete from `order` where find_in_set(order_id,”1000067,100008″)”;
/**
* 删除
*/
@Override
public void deleteOrder(String order_id) {
String sql = "delete from `order` where find_in_set(order_id,\"" + order_id + "\")";
Object[] objs = {};
executeUpdate(sql, objs);
}
这样就能实现批量删除了
实现批量查询也是一样
sql语句为:select * from `table表名` where find_in_set(匹配的列名,”对应的条件1,对应的条件2″);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15236.html