动态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 }

原文地址:https://www.cnblogs.com/wangquanyi/p/11329035.html

时间: 2024-10-22 17:05:03

动态SQL拼接,select,insert的写法的相关文章

Mybatis的动态sql拼接语句

Mybatis的动态sql拼接语句 1.主配置文件SqlMapConfig.xml  <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE configuration         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"         "http://mybatis.org/dtd/mybatis-3-config.dtd

4.mybatis动态SQL拼接/取值/OGNL

4.mybatis动态SQL拼接/取值 一.mybatis框架的SQL拼接是采用OGNL表达式进行的,以下我会列出常用的取值方法. 图片来源:慕课网 1.1常用的取值方法: 1.2特殊的取值方法: mod为取余数

MyBatis在注解上使用动态SQL(@select使用if)

1.用script标签包围,然后像xml语法一样书写 @Select({"<script>", "SELECT * FROM tbl_order", "WHERE 1=1", "<when test='title!=null'>", "AND mydate = #{mydate}", "</when>", "</script>&q

Java下拼接执行动态SQL语句(转)

在实际业务中经常需要拼接动态SQL来完成复杂数据计算,网上各类技术论坛都有讨论,比如下面这些问题: http://bbs.csdn.net/topics/390876591 http://bbs.csdn.net/topics/390981627 https://www.linkedin.com/groups/SQL-Query-Help-needed-137774.S.5948812806903119877?trk=groups_items_see_more-0-b-ttl http://bb

Java下拼接执行动态SQL语句

Java拼接动态SQL的一般做法有       1.使用动态语句 很多数据库都提供了处理动态SQL的语法,如Oracle的EXECUTE IMMEDIATE语句.MSSQL的EXEC和SP_EXECUTESQL.Mysql的预处理语句等.这些功能让我们在数据库端来处理动态查询提供了极大遍历,但这种方式只适用于相对简单地动态查询,复杂的情况经常会采用下面的方式. 2.使用存储过程 对于复杂的情况,一般会在存储过程中来拼接动态SQL.使用存储过程完成相对灵活,但编码复杂度过高,有时运行效率较低. 3

MyBatis系列:(5)动态SQL

1.动态SQL操作之查询 查询条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL     <select id="dynamicFind" parameterType="map" resultMap="empMap">         select emp_id,emp_name,emp_sal from emp         <where>             <if test="pid 

动态sql与变量绑定

有时候动态sql需要进行变量的赋值,这个时候就需要调用系统的存储过程sp_executesql了.使用中还是有些注意事项,代码如下: --字符型字段需声明为NVARCHAR类型 DECLARE @STRSQL NVARCHAR(1000),@VALUE_STR NVARCHAR(254) --动态SQL拼接 SET @STRSQL='SELECT @VALUE_STR=ISNULL(VALUE_STR,'''') FROM [Mast'+'ADMIN'+'@Prop_Fld] WHERE FOR

MyBatis知多少(25)动态SQL

使用动态查询是MyBatis一个非常强大的功能.有时你已经改变WHERE子句条件的基础上你的参数对象的状态.在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的动态SQL标签. 所有的逻辑是使用一些额外的标签放在:XML文件.下面是一个例子,其中的SELECT语句将努力在两个方面: 如果想传递一个ID,然后它会返回所有与该ID的记录, 否则,将返回所有雇员ID为NULL的记录. <?xml version="1.0" encoding=&q

MyBatis之动态sql

1.Mybatis动态sql是基于OGNL的表达式,可以使我们方便的在sql语句中实现某些逻辑. 2.使用if+where实现多条件查询 1〉dao层方法 //if动态sql查询 public List<User> findByIf(User user); 2〉xml配置文件的sql语句 <!-- if动态sql查询 --> <select id="findByIf" resultType="User"> SELECT * FRO