有个需求mybatis 插入的时候不知道有哪些字段,需要动态的传入值和字段,

Java code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

    @Test

    public void testAddProductGuaranty() {

        //1    560    50000    2014/10/2 0:00:00    2014/11/1 0:00:00    500000    车况良好

        Map<String, Object> productGuaranty = new HashMap<String, Object>();

              //这些字段可能是不固定的,只做测试用

        productGuaranty.put("product_id"1);

        productGuaranty.put("remark""车况良好");

        productGuaranty.put("price"50000);

        productGuaranty.put("release_date"new Date());

        productGuaranty.put("license_date"new Date());

        productGuaranty.put("distance"50000);

        productGuaranty.put("car_type"560);

        productGuaranty.put("car_id"1);

        productGuarantyService.addProductGuaranty(productGuaranty);

    }

Java code?

1

2

3

4

5

6

7

8

9

    @Override

    public void addProductGuaranty(Map<String, Object> productGuaranty) {

        Map<String, Object> params = new HashMap<String, Object>();

               //获取动态字段

        List<CustomTableFields> customTableFields = configService.getTableFields("product_guaranty");

        

        productGuaranty.put("customTableFields", customTableFields);

        productGuarantyDao.insert(productGuaranty);       

    }

SQL code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

  <insert id="insert" parameterType="java.util.Map" statementType="STATEMENT" >

    insert into product_guaranty 

        <foreach item="item" collection="customTableFields" open="("   separator="," close=")">  

                ${item.fieldName}

        </foreach>

    values

        <foreach item="item" collection="customTableFields" open="("   separator="," close=")">  

            <choose>  

               <when test="item.type == 'date'">  

                    ${item.fieldName}                          

               </when>

               <when test="item.type == 'int'">  

                    ${item.fieldName}                          

               </when>

               <when test="item.type == 'float'">  

                    ${item.fieldName}                          

               </when>  

               <otherwise>

                        ${item.fieldName}   

               </otherwise>  

           </choose>

        </foreach> 

  </insert>

问题是第二个循环这里如何根据${item.fieldName} 从params中获取值?

有个需求mybatis 插入的时候不知道有哪些字段,需要动态的传入值和字段相关推荐

  1. 数据库SQL:在插入语句中使用查询查询语句(动态获取数据库自增字段的值)

    在插入语句中使用查询: INSERT into 表名(获取自增id1 ,获取自增id2 ,字段3 ,...... ,字段N ) SELECT 表别名1.id, 表别名2.id ,"字段3的值 ...

  2. mybatis 需要注意的点 MyBatis 插入空值时,需要指定JdbcType (201

    转自:https://blog.csdn.net/snakemoving/article/details/76052875 前天遇到一个问题 异常显示如下: 引用 Exception in threa ...

  3. Mybatis插入MySQL数据库中文乱码

    Mybatis插入MySQL数据库中文乱码 在dataSource.properties配置文件中设置useUnicode=true&characterEncoding=utf-8编码即可. ...

  4. MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

    向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...

  5. Mybatis插入数据后获取主键的值

    Mybatis插入数据后获取主键的值 1. 所使用的数据库是支持自增的,且主键是自增的 <!-- 支持自增的数据库且主键是自增的:自动将插入后自增id的值赋值给传入的Employee的id--& ...

  6. Oracle数据库mybatis 插入空值时报错(with JdbcType OTHER)

    Oracle数据库mybatis 插入空值时报错(with JdbcType OTHER)的两种解决方案 在使用Mybatis 3 时,发现了这个问题,当插入数据时,如果有一个字段为空值时,系统会报异 ...

  7. MyBatis 插入失败后爆出 500 ,如何捕获异常?

    MyBatis 插入失败后爆出 500 ,如何捕获异常? 参考文章: (1)MyBatis 插入失败后爆出 500 ,如何捕获异常? (2)https://www.cnblogs.com/chancy ...

  8. mybatis插入数据到数据库成功,数据库却没有数据

    mybatis插入数据到数据库成功,数据库却没有数据 错误描述: 解决办法: 错误描述: 编写测试类,显示数据插入成功: 但是去查看数据库中相应表中数据情况,缺发现没有数据! 解决办法: 查看核心配置 ...

  9. 最新Mybatis插入数据返回自增主键详细配置

    Mybatis插入数据返回自增主键 Mybatis插入数据以后只会返回影响的数据库行数,如果是插入一条数据成功则返回1,失败返回零,插入多条返回插入成功的数量. 通过注解或者xml配置无法直接返回自增 ...

最新文章

  1. seaborn系列 (13) | 点图pointplot()
  2. 我是这样分析Linux性能问题的
  3. 图像滤波与滤波器基础知识
  4. 小细节决定大人生 或 对于细节的在意程度决定你人生到达的高度 或 对于细节的把控决定你是否比水平大致相同的人优秀与否 + 做事要带点脑子
  5. 机器学习算法时间复杂度的考虑
  6. Apache No installed service named “Apache2.4“的解决办法
  7. Python day17 模块介绍1(time,random)
  8. Spring Bean生命周期-prepareRefresh(二)
  9. matlab视频分辨率更改
  10. 蓝宝石rx470d原版bios_AMD又能开核?刷完BIOS后性能白给,这次血赚了
  11. AD9在元件库封装库添加LOGO
  12. Eviews下载及安装
  13. 音乐节拍自动标记插件 BeatEdit 2 for Pr
  14. 计算机怎么通过网线共享网络,怎样用一根网线联接两台电脑实现网络共享?
  15. js怎么实现ftp上传文件到服务器,js ftp上传文件到服务器上
  16. Tribon快捷按钮图标格式
  17. 信源编码技术作业(1)——使用Audacity软件绘制清浊音频谱图并进行分析
  18. matlab中rand(‘seed‘,任意符号)是干什么的?
  19. 《WinForm开发系列之控件篇》Item2 BindingNavigator
  20. office二级证书和mysql_二级考office还是access ??在线等 挺急的 (内附合格证书领取通知)...

热门文章

  1. 串传送指令MOVSB MOVSW
  2. μC/OS-Ⅱ 操作系统内核知识
  3. leetcode 35. 搜索插入位置 思考分析
  4. kotlin 查找id_Kotlin程序查找Square区域
  5. Java ResourceBundle keySet()方法及示例
  6. 一、织物组织相关基本概念
  7. python安全攻防---scapy使用
  8. 汇编指令处理的数据长度
  9. 1106 Lowest Price in Supply Chain (25)
  10. java开发小程序好吗,看完必懂