美文网首页
Mybatis插入并获取主键(第一坑)

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

作者: lv_shun | 来源:发表于2019-03-12 17:42 被阅读0次

常规

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

//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使用参数时也要对应上,希望能帮到迷路的人.

相关文章

网友评论

      本文标题:Mybatis插入并获取主键(第一坑)

      本文链接:https://www.haomeiwen.com/subject/qywnpqtx.html