本文写的工具类具体实现了通过传递一定的参数自动生成简单的sql语句。
构思:如何实现?
首先我列举出了单表删查改sql的所有基础写法,对其需要的参数个数进行归类。
(1) 单表查询无条件,两个参数(标识符(S),表名)
(2) 单表查询特定字段无条件,三个参数(标识符(S),表名,特定字段)
(3) 单表查询(特价字段/所有)有条件,四个参数(标识符(S),表名,特定字段/*,条件)
(4) 单表修改无条件三个参数(标识符(U),表名,需要修改的值)【操作失误会误改数据】
(5) 单表修改有条件四个参数(标识符(U),表名,需要修改的值,条件)
(6) 单表删除两个参数(标识符(D),表名)【操作失误会误删除所有数据】
(7) 单表删除有条件三个参数(标识符(D),表名,条件)
思维:通过方法重载写三个方法同名参数不同,分别接收2,3,4个参数对参数进行处理。
除去上方可能出现操作失误的情况,通过参数个数进行分类。
(一) 四个参数的方法满足(3),(5)两个功能
(二) 三个参数的方法满足(2),(7)三个功能
(三) 两个参数方法满足(1),一个功能
实现:
(1) 四个参数的方法
private static String DisposeString(String signString,String tableNameString,String fieldsString,String conditionString){
StringBuilder buffer = new StringBuilder("");
switch (signString) {
case "S": //查询
buffer.append("select ");
buffer.append(fieldsString);
buffer.append(" from ");
buffer.append(tableNameString);
buffer.append(" where ");
buffer.append(conditionString);
break;
case "U": //修改
buffer.append("update ");
buffer.append(tableNameString);
buffer.append(" set ");
buffer.append(fieldsString);
buffer.append(" where ");
buffer.append(conditionString);
break;
default:
break;
}
return buffer.toString();
}
(2)三个参数的方法
private static String DisposeString(String signString,String tableNameString,String conditionString){
StringBuilder buffer = new StringBuilder("");
switch (signString) {
case "S":
buffer.append("select ");
buffer.append(conditionString);
buffer.append(" from ");
buffer.append(tableNameString);
break;
case "D":
buffer.append("delete ");
buffer.append(tableNameString);
buffer.append(" where ");
buffer.append(conditionString);
break;
default:
break;
}
return buffer.toString();
}
(3) 两个参数的方法
private static String DisposeString(String signString,String tableNameString){
String string ="";
if (signString.equals("S")) {
string = "select * from " + tableNameString;
}
return string;
}
整体逻辑:使用switch case语句判断标识符执行不同的拼接操作,使用StringBilderpiner拼接SQL语句。
使用方法重载优化使用,做任何处理都只是调用相同的方法名,传递参数决定返回的SQL。
示例:
输出: