当前位置: 首页 > article >正文

h2数据库模拟mysql进行单元测试遇到的问题

使用h2数据库进行springboot的单元测试的时候出现的几个问题

1.h2数据库插入json数据的时候,默认是json String的形式(josn数据入库的时候有转义字符),导致查询出来的json数据在进行处理的时候无法解析成jsonNode

操作:

在单元测试插入数据的时候,在json对应的字段最后加上FORMAT JSON

即 insert into tabelA(json字段,string字段) values(“{‘A":“B”}’ FORMAT JSON, ”string数据段“)即可正确插入json数据(入库的时候无转义符)

2.h2数据库不支持mysql的批量更新操作,也不支持mysql的replace into语句。

--批量更新(H2不支持)
  <update id="increaseBatch"  parameterType="java.util.List">
        <foreach collection="list" item="item" index="index" open="" close="" separator=";">
            update product
            <set>
                quantity = quantity + #{item.updateQuantity}, modify_time = #{item.modifyTime}
            </set>
            where id = #{item.productId}
        </foreach>
    </update>

--批量插入(H2支持)
<insert id="insertItems" keyProperty="id" parameterType="java.util.List" useGeneratedKeys="true">
        <selectKey keyProperty="id" order="AFTER" resultType="long">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO bill_item(
        bill_id,product_id,product_name,product_quantity,product_quantity_after,product_price,product_amount)
        VALUES
        <foreach close="" collection="list" index="index" item="item" open="" separator=",">
            (
            #{item.billId},#{item.productId},#{item.productName},#{item.productQuantity},
            #{item.productQuantityAfter},#{item.productPrice},#{item.productAmount})
        </foreach>
    </insert>

3.mysql中的json_contain等sql函数,在h2数据库中也是没有的,需要自己定义。


http://www.kler.cn/news/357734.html

相关文章:

  • 运维软件:监控易如何助力运维团队跨越数据整合与分析的鸿沟
  • 科研绘图系列:R语言突出强调部分的饼图(pie plot)
  • 黑马程序员Java笔记整理(day02)
  • 如何复制任意网页上的文字——飞书、知乎、小红书通通拿下!
  • redis的zset实现下滑滚动分页查询思路
  • SQL Injection | SQL 注入 —— 加解密注入
  • Educational Codeforces Round 80 D. Minimax Problem(二分,状态压缩)
  • Java程序设计:spring boot(2)
  • 海康威视被曝裁员千人
  • PyTorch深度学习入门汇总
  • ufw 工具介绍
  • SpringBoot之RedisTemplate基本配置
  • 86.【C语言】数据结构之链表的总体概述
  • 【ESP32-IDFV5.3.1开发】带SSL的MQTT-demo连接教程
  • XML 编辑器:功能、选择与使用技巧
  • kubernetes之Helm包管理器
  • 基于springboot的画师约稿系统的设计与实现
  • mysql 的存储引擎各自的优缺点
  • 01_MVCC(多版本并发机制)
  • Leetcode 3327. Check if DFS Strings Are Palindromes