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

  • 相关阅读:
    PHP 获取当前url的函数及参数
    PHP 和 AJAX responseXML 实例
    PHP 和 AJAX 投票
    AJAX技术在PHP开发中的简单应用
    摄影教程
    结合 Ajax 进行 PHP 开发
    CSS 格式验证器
    swfobject.js,这个JS究竟有什么作用呢
    PHP中Date获取时间不正确怎么办
    用来给不愿意用iframe的同志的页面引用的解决办法
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/6943840.html
Copyright © 2011-2022 走看看