mybatis插入返回自增主键

王静0716 发布于 2017/08/11 10:34
阅读 3K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

<insert id="addCart" parameterType="map">
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
        insert into
        cart
        (shop_no, goods_no, user_id, num, status, create_time, update_time, source)
        VALUES
        (#{shopNo}, #{goodsNo}, ${userId}, ${num}, ${status}, #{now}, #{now}, ${source})
</insert>


Integer addCart(@Param("shopNo") String shopNo, @Param("goodsNo") String goodsNo,
                @Param("userId") Integer userId, @Param("num") int num, @Param("status") int status, @Param("now") Date now, @Param("source") int source);

插入数据没问题,但是总是返回1。

<insert id="addCart" parameterType="map" useGeneratedKeys="true" keyProperty="id">
        insert into
        cart
        (shop_no, goods_no, user_id, num, status, create_time, update_time, source)
        VALUES
        (#{shopNo}, #{goodsNo}, ${userId}, ${num}, ${status}, #{now}, #{now}, ${source})
</insert>

Integer addCart(@Param("shopNo") String shopNo, @Param("goodsNo") String goodsNo,
                @Param("userId") Integer userId, @Param("num") int num, @Param("status") int status, @Param("now") Date now, @Param("source") int source);

或

@Options(useGeneratedKeys = true, keyProperty="cart.id", keyColumn="GENERATED_KEY")
    Integer addCart(@Param("shopNo") String shopNo, @Param("goodsNo") String goodsNo,
                @Param("userId") Integer userId, @Param("num") int num, @Param("status") int status, @Param("now") Date now, @Param("source") int source);

或

@Options(useGeneratedKeys = true, keyProperty="cart.id" ,keyColumn="id")
    Integer addCart(@Param("shopNo") String shopNo, @Param("goodsNo") String goodsNo,
                @Param("userId") Integer userId, @Param("num") int num, @Param("status") int status, @Param("now") Date now, @Param("source") int source);

插入数据没问题,但是得不到返回的自增主键id值。

nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [goodsNo, param7, param5, param6, num, source, param3, userId, param4, param1, param2, now, shopNo, status]

 

@Options(useGeneratedKeys = true, keyProperty="cart.id", keyColumn="id")
    Integer addCart(String shopNo, String goodsNo,
                    Integer userId, int num, int status, Date now, int source);

则插入失败,且报错。

nested exception is org.apache.ibatis.binding.BindingException: Parameter 'userId' not found. Available parameters are [param7, param5, param6, param3, param4, param1, param2, 0, 1, 2, 3, 4, 5, 6]

 

 

加载中
0
王静0716
王静0716
<table tableName="rc_template">
    <generatedKey column="ID" sqlStatement="MySql" identity="true"/>
</table>

generator config文件配置。亲测有效。http://blog.csdn.net/u011403655/article/details/50696341

0
王静0716
王静0716
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
J
JCod3r
<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User">  
    insert into user(userName,password,comment)  
    values(#{userName},#{password},#{comment})  
</insert> 
public class User {  
    private int userId;  
    private String userName;  
    private String password;  
    private String comment;  
      
    //setter and getter  
}  

 

王静0716
王静0716
我用getId也是错
J
JCod3r
回复 @王静0716 : 主键会set到user的userId上,而不是返回值
王静0716
王静0716
我就是这样写的啊
0
J
JCod3r

参数用对象,insert/update语句返回的是影响的条数,不是你要的主键

王静0716
王静0716
意思是mybatis 不能 返回 自增主键值?
王静0716
王静0716
我换成对象 也是错
0
小坏熊
小坏熊
该评论暂时无法显示,详情咨询 QQ 群:点此入群
王静0716
王静0716
mybatis 改成 cart.id也是一样的错
0
红薯官方
红薯官方

Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [goodsNo, param7, param5, param6, num, source, param3, userId, param4, param1, param2, now, shopNo, status]

 

异常在此。

王静0716
王静0716
废话
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部