字符串转换成数据库in语句的形式(五)

一. 转换成in


在数据库操作的时候,参数通常不仅仅是普通的值,还有一种 in 的形式。 如查询员工编号是 1,3,6,7 的人。 可以写成 user_id in (‘1’,‘3’,‘6’,‘7’) 这样的形式。 而传入的参数值 一般是 1,3,6,7 。 需要进行相应的转换。 即 1,3,6,7 与 (‘1’,‘3’,‘6’,‘7’) 之间的转换。


二. 替换方法replaceAll()


仔细观察,可以发现 (‘1’,‘3’,‘6’,‘7’) ,可以看成 (’ ,1’,‘3’,‘6’,‘7 ,与’) 的形式。 也就是将, 替换成了’,’ 的形式。


可以利用方法:


 protected String toInParam(String str){
        //如果为空时,进行处理一下。
        if(str==null||"".equals(str)){
            return "('')";
        }
        // 前引号                  替换成后引号+','+前引号的形式                   后引号
        return "('"+str.replaceAll(",", "','")+"')";
    }


三.数组转换成in 参数


有的时候,传入的不是字符串,而是一个数组。 需要先将数组转换成字符串,用,进行分隔。 然后再利用上面的toInParam() 方法进行处理即可。


public String toString(int []arr){
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<arr.length;i++){
            if(i==arr.length-1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]+",");
            }
        }
        return sb.toString();
    }


四. 程序代码


    @Test
    public void testB(){
        System.out.println("in形式为:"+toInParam("1,2,3,4,5"));
    }
    protected String toInParam(String str){
        if(str==null||"".equals(str)){
            return "('')";
        }
        return "('"+str.replaceAll(",", "','")+"')";
    }


谢谢!!!


上一篇:Freemarker教程2(表达式和常用指令)


下一篇:js 字符串转换成数字的三种方法