动态SQL拼接,select,insert的写法

Posted 汪全意

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态SQL拼接,select,insert的写法相关的知识,希望对你有一定的参考价值。

 1 import java.util.Iterator;
 2 import java.util.Map;
 3 import java.util.Set;
 4 
 5 public class SQLUtil {
 6     public static String sqlSelect = "";
 7 
 8     public static String selectQuerySQL(Map<String, Object> map, String tableName) {
 9         if (map.isEmpty() || map.size() == 0) {
10             sqlSelect = "select*from" + tableName;
11         } else {
12             sqlSelect = "select*from" + tableName + "where";
13             Set set = map.keySet();
14             Iterator iterator = set.iterator();
15             int index = 0;
16             while (iterator.hasNext()) {
17                 String key = (String) iterator.next();
18                 Object value = map.get(key);
19                 if (value instanceof String) {
20                     value = "‘" + value + "‘";
21                 }
22                 index++;
23                 if ((index == 1 && map.size() == 1) || map.size() == index) {
24                     sqlSelect += key + "=" + value + " ";
25                 } else {
26                     sqlSelect += key + "=" + value + " " + "and" + " ";
27                 }
28             }
29         }
30         System.out.println("待执行的select SQL:"+sqlSelect);
31         return sqlSelect;
32     }
33     public static String insertSQL(Map<String,Object>map){
34         Iterator<String> iterator = map.keySet().iterator();
35         StringBuilder sqlTable=new StringBuilder("insert into");
36         StringBuilder sqlKey=new StringBuilder("(");
37         StringBuilder sqlVaule= new StringBuilder("value(");
38         while (iterator.hasNext()){
39             String key=iterator.next();
40             if(map.get(key).toString()==null||map.get(key).toString().length()==0){
41                 iterator.remove();
42             }else {
43                 if (key.equals("tableName")){
44                     sqlTable.append(map.get(key));
45                 }else {
46                     sqlKey.append(key+",");
47                     sqlVaule.append(map.get(key)+",");
48                 }
49             }
50         }
51         sqlTable.append(sqlKey.toString().substring(0,sqlKey.toString().lastIndexOf(","))+")").append(sqlVaule.toString().substring(0,sqlVaule.lastIndexOf(","))+")");
52         String sql=sqlTable.toString();
53         System.out.println("待执行的insert SQL:"+sql);
54         return sql;
55     }
56     /*此为以上方法的用法,可以忽略*/
57     /*public static void main(String[] args) {
58         //调用select的方法
59         Map<String,Object> map=new HashMap<>();
60         map.put("字段名","具体的值");
61         String tableName="表名";
62         System.out.println(selectQuerySQL(map,tableName).toString());
63         //调用insert的方法
64         Map<String,Object> map=new HashMap<>();
65         map.put("字段名","具体的值");
66         map.put("tableName","这里最后添加表名");
67         String sql = insertSQL(map);
68         PreparedStatement statment = connection.prepareStatement(sql);
69         statment.execute(sql);//这里是执行SQL语句,需要借助JDBCUtil中的Connection得到connection
70     }*/
71 }

 

以上是关于动态SQL拼接,select,insert的写法的主要内容,如果未能解决你的问题,请参考以下文章

动态执行SQL语句,拼接字符串,select中带有一个变量

SQL 备忘录

生成动态SQL_insert update select 语句

动态拼接SQL 语句

sql动态拼接:为啥select count(*) where条件后面<if test="">不起作用?

SQL语句问题动态拼接