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

  • 相关阅读:
    Codeforces Round #229
    A Funny Game(博弈论)
    01背包模板
    一月24日新生冬季练习赛解题报告H.排列问题
    一月24日新生冬季练习赛解题报告F.棋盘
    POJ 2240Arbitrage
    POJ 3660Cow Contest
    POJ 3259Wormholes
    POJ 1860Currency Exchange
    HDU 4027Can you answer these queries?
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/6943840.html
Copyright © 2011-2022 走看看