Mybatis使用问题汇总-采坑和实践

简介: xlecho编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!! JDK1.

xlecho编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!


JDK1.8分组问题产生的SQL需求

需求一

传入的值数据结构为:List(Map)

Dao层的代码:

List<RecordPo> selectConditionRecord(List<Map<String, String>> list);

xml层代码:

<select id="selectConditionRecord" resultMap="BaseResultMap" parameterType="java.util.List">
    <foreach collection="list" item="item" index="index" separator=";">
        select
        *
        from
        RECORD
        <where>
            <if test="item.code != null and item.code != ''">
                code = #{item.code,jdbcType=VARCHAR}
            </if>
            <if test="item.account != null and item.account != ''">
                and account = #{item.account,jdbcType=VARCHAR}
            </if>
            <if test="item.createdate != null">
                and to_char(CREATEDATE, 'yyyy-MM-dd') = #{item.createdate,jdbcType=TIMESTAMP}
            </if>
        </where>
    </foreach>
</select>

需求二

mybatis批量更新问题
传入的值数据结构为:List(Map)

Dao层的代码:

void batchUpdate(List<RecordPo> list);

xml层代码:

<update id="batchUpdate" parameterType="java.util.List">
    <foreach collection="list" index="index" item="item" separator=";">
        update RECORD
        <set>
            <if test="item.id != null">
                id = #{item.id,jdbcType=VARCHAR},
            </if>
            <if test="item.code != null">
                code = #{item.code,jdbcType=VARCHAR},
            </if>
            <if test="item.createuser != null">
                createuser = #{item.createuser,jdbcType=VARCHAR},
            </if>
            <if test="item.createdate != null">
                createdate = #{item.createdate,jdbcType=TIMESTAMP},
            </if>
        </set>
        <where>
            id = #{item.id,jdbcType=VARCHAR}
        </where>
    </foreach>
</update>
  • 出现的问题:
Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;

check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE hd_t_user\n             SET username ='111' \n            where\n           ' at line 6\r\n### The error may exist in file;
  • 解决方案:
allowMultiQueries=true

在这里插入图片描述

目录
相关文章
|
10月前
|
SQL Java 数据库连接
MyBatis 框架入门理论与实践
MyBatis 框架入门理论与实践
94 6
|
10月前
|
SQL Java 数据库连接
MyBatis Plus应用实践总结
MyBatis Plus应用实践总结
113 0
|
10月前
|
XML Java 数据库连接
MyBatis使用实践总结
MyBatis使用实践总结
83 0
|
Java 数据库连接 mybatis
MyBatis中对象映射关联之association使用实践
MyBatis中对象映射关联之association使用实践
589 1
|
9月前
|
Java 数据库连接 数据库
MyBatis TypeHandler详解:原理与自定义实践
MyBatis TypeHandler详解:原理与自定义实践
|
10月前
|
Java 数据库连接 微服务
Java程序员必学知识:高并发+微服务+数据结构+Mybatis实战实践
BATJ最全架构技术合集:高并发+微服务+数据结构+SpringBoot 关于一线互联网大厂网站的一些特点:用户多,分布广泛、大流量,高并发、海量数据,服务高可用、安全环境恶劣,易受网络攻击、功能多,变更快,频繁发布、从小到大,渐进发展、以用户为中心。 如果你工作中够仔细,你会发现这些特点跟高并发、分布式、微服务、Nginx这些技术密切相关的,是因为只要你的公司在上升,用户量级都会与日俱增,高性能、高并发的问题自然避免不了,话不多说往下看。
|
10月前
|
SQL 存储 Java
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
104 0
|
10月前
|
XML SQL Java
MyBatis【付诸实践 01】mapper.xml 中特殊符号的 2 种处理方法(CDATA区+替代字符举例)
MyBatis【付诸实践 01】mapper.xml 中特殊符号的 2 种处理方法(CDATA区+替代字符举例)
309 0
|
10月前
|
XML Java 关系型数据库
MyBatis Plus入门实践详解
MyBatis Plus入门实践详解
149 0
|
SQL Java 数据库连接
MyBatis: 深入解析与实践
什么是MyBatis? MyBatis是一款开源的、基于Java的持久层框架。它的设计理念是通过简单的XML或注解配置来映射Java对象和数据库表,而不是采用全自动的映射机制。这使得开发者可以更直观地控制SQL语句,适应不同的数据库和复杂的查询需求。
185 0