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

在这里插入图片描述

目录
相关文章
|
4月前
|
SQL Java 数据库连接
看完即可上手 MyBatis-Plus 的教程
看完即可上手 MyBatis-Plus 的教程
33 0
|
1月前
|
XML Java 数据库连接
Mybatis-Plus学习小项目及详细教程
Mybatis-Plus学习小项目及详细教程
|
3月前
|
SQL Java 数据库连接
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
|
4月前
|
XML Java 关系型数据库
MyBatis Plus入门实践详解
MyBatis Plus入门实践详解
40 0
|
8月前
|
Java 数据库连接 mybatis
mybatis采坑记及源码分析
问题描述 有些需求,需要把上一步批量操作返回的主键作为下个表的关联使用,这个时候用mybatis批量操作,mybatis批量操作有些版本不能返回主键,只能一个一个的插入,这样就降低了效率。 接口
44 0
|
9月前
|
SQL Java 关系型数据库
手把手搭建mybatis入门程序
手把手搭建mybatis入门程序
|
11月前
|
SQL 数据可视化 Java
快速学习MyBatis|实战项目详解
快速学习MyBatis|实战项目详解
172 0
|
XML SQL Java
MyBatis配置与使用-初入篇
MyBatis配置与使用
180 0
|
SQL XML 存储
图文讲解带你拿捏MyBatis(一)——MyBatis入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。在本文中,我们会学习一些mybatis的相关概念,以及搭建其开发环境以便快速入门。
138 0
|
SQL XML 存储
【SSM直击大厂】第十二章:MyBatis 快速入门
📋📋 精彩摘要:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
91 0