【实践】mybatis批量插入map

简介: 【实践】mybatis批量插入map

需求


近期项目在测试上出了些问题,主要原因是我们项目中使用的Doris,然后线上和测试环境隔离,线上有数据,Doris没数据,需要将线上数据往测试环境弄一部分,所以写了个小程序导入了一下


思路


因为不止一张表,所以想着写个通用的代码,把表的部分传进来就可以同步,这样的话,就绝对不能用实体类来传输数据,所以用map,


用map还有一个问题是之前没写过map的批量插入,所以稍微查了查,这里做个记录,大家可以看一下


首先是从线上查询的部分,如下:


    <select id="search" resultType="java.util.Map">
        select * from  ${tableName}
        order by ${orderBy} desc
        limit #{pageNo},#{pageSize}
    </select>


然后是插入的部分,如下


<insert id="insert" parameterType="java.util.Map">
        insert into ${tableName}
        (
        <foreach collection="columnMap" item="value" index="key" separator=",">
            `${key}`
        </foreach>
        )
        values
        <foreach collection="mapList" item="columnMap" separator=",">
            (
            <foreach collection="columnMap" item="value" index="key" separator=",">
                #{value}
            </foreach>
            )
        </foreach>
    </insert>


最后是程序的部分,如下:


    public Result index(String tableName, String orderBy,Integer pageNo,Integer pageSize) {
        List<Map<String,Object>> resultList= dorisSearchMapper.search(tableName,orderBy,pageNo,pageSize);
        Map<String,Object> map=resultList.get(0);
        dorisTestMapper.insert(tableName,map,resultList);
        return ResultBuilder.success();
    }


注意


注意一下,dorisSearchMapper和dorisTestMapper是两个源


还有一点需要注意的地方,使用map接收返回值,有可能出现字段丢失的情况,一般出现在值为NULL的时候,此时请在mybatis的配置文件里面加上如下配置


        <setting name="callSettersOnNulls" value="true"/>
目录
相关文章
|
5月前
|
SQL Java 数据库连接
Mybatis【Map传参与模糊查询】
Mybatis【Map传参与模糊查询】
|
8月前
|
Java 数据库连接 mybatis
mybatis返回map类型数据空值字段不显示(三种解决方法)
mybatis返回map类型数据空值字段不显示(三种解决方法)
|
7月前
|
SQL Java 数据库连接
在mybatis中,使用map传递参数和进行模糊查询的方法
在mybatis中,使用map传递参数和进行模糊查询的方法
194 0
|
5月前
|
Java 数据库连接 mybatis
mybatis 返回map
mybatis 返回map
121 0
|
2月前
|
SQL 存储 Kubernetes
Seata常见问题之mybatisplus的批量插入方法报SQL错误如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
43 0
|
4月前
|
存储 Java 数据库连接
MyBatis Plus中的批量插入:通过开启rewriteBatchedStatements=true
MyBatis Plus中的批量插入:通过开启rewriteBatchedStatements=true
147 0
|
4月前
|
XML Java 数据库连接
mybatis传参为map的写法
mybatis传参为map的写法
|
4月前
|
Java 数据库连接 mybatis
mybatis返回结果为List<Map<String, Object>>的写法
mybatis返回结果为List<Map<String, Object>>的写法
|
5月前
|
Java 数据库连接 mybatis
mybatis 批量插入
mybatis 批量插入
26 0
|
9月前
|
SQL Java 数据库连接
mybatis查询数据时,返回类型设置的map,然后出现这个错误java.lang.NoSuchMethodException: java.util.Map.<init>
mybatis查询数据时,返回类型设置的map,然后出现这个错误java.lang.NoSuchMethodException: java.util.Map.<init>
109 0