zoukankan      html  css  js  c++  java
  • mybaits插入时的一些总结

    我们时长在批量插入时,需要获取插入数据的id.

    这样:

     <insert id="insertUser" parameterType="gys.entity.User" keyProperty="userId" useGeneratedKeys="true">
            INSERT INTO `user`
            (userName)
            VALUES
            (#{userName})
        </insert>

    这样是没问题的.

    但是有时候牵扯到批量插入,并且获取插入的id

    这样写:

    <insert id="insertUserBatch1" keyProperty="userId" useGeneratedKeys="true">
            INSERT INTO `user`
            (userName)
            VALUES
            <foreach collection="list" separator="," item="item">
                (#{item.userName})
            </foreach>
        </insert>

    这样运行后就会出现异常了.

    这是因为你用的mybatis版本过低.比如我用的是3.2.2版本,这是mybatis的一个bug.

    如果你换成3.4.4版本就没有问题了.

    上面的sql语句换个写法 就又会报异常了(将insert包围在foreach里面)

    比如:

    <insert id="insertUserBatch2">
             <foreach collection="list" separator=";" item="item">
                 INSERT INTO `user`
                    (userName)
                VALUES
                    (#{item.userName})
             </foreach>
        </insert>

    同理还有update的批量更新也是有这个问题

    <update id="updateUserBatch">
            <foreach collection="list" item="item" separator=";">
                update `user` set
                    userName=#{item.userName}
                where
                    userId=#{item.userId}
            </foreach>
        </update>

     这是因为mybatis默认是只能执行一条sql语句,

    可以再链接路径的时候加上参数,就可以执行多条sql语句了.allowMultiQueries=true

    jdbc:mysql://127.0.0.1:3306/book?allowMultiQueries=true

  • 相关阅读:
    Bootstrap 网格系统(Grid System)实例2
    Bootstrap 网格系统(Grid System)实例1
    Bootstrap 网格系统(Grid System)
    Bootstrap CSS概览
    Bootstrap响应式布局(1)
    46、谈谈你对面向对象的理解?
    算法--练习题1
    堆排序----赠品2
    计数排序----赠品1
    45、如何使用python删除一个文件?
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/6943840.html
Copyright © 2011-2022 走看看