Mybatis插入并获取主键(第一坑)

常规

网上有好多教程,大概都差不多,一共有两种.比较简单的就是

//mapper
Long 方法(User user);
<insert id="方法" useGeneratedKeys="true" keyProperty="id" parameterType="com.test.User">
        insert into user
        (`name`,age)
        values
        (
          #{name},
          #{age}
        )
    </insert>
  • useGeneratedKeys 设置true
  • keyProperty 对应实体类的字段
  • parameterType 参数类型

然后在传入的参数里getId()即可.

我的写法略有不同,结果就一致获取不到,后来灵机一动,感受到了来自mybatis设计者的召唤.具体写法如下:

//mapper
Long 方法(@Param(value = "u") User user);
<insert id="方法" useGeneratedKeys="true" keyProperty="id" parameterType="com.test.User">
        insert into user
        (`name`,age)
        values
        (
          #{u.name},
          #{u.age}
        )
    </insert>

解决

其实就是参数经过注解的形式命名之后,mapper.xml中的keyProperty就不能直接写字段名了,要加上参数名u.id,如下:

<insert id="方法" useGeneratedKeys="true" keyProperty="u.id" parameterType="com.test.User">
        insert into user
        (`name`,age)
        values
        (
          #{u.name},
          #{u.age}
        )
    </insert>

总结

在多参数的时候多用@Param来修饰参数,Mapper.xml使用参数时也要对应上,希望能帮到迷路的人.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容