• MyBatis 获取插入记录的 id


      现在的项目改用 Guns 了,也是一个很不错的框架,用起来也感觉很不错,上手也挺方便的。毕竟对于只是应用层面的知识,也基本上就是看看手册,熟悉熟悉就可以轻松上手了。如果是想要深入,或者刨根问底,那么就需要有一定的基本功了,比如需要完全熟练掌握 Java 的语法特性,熟悉设计模式……对于我而言,暂时还是达不到的,还是只能从应用的层面来入手,有问题搜索搜索资料,或者调试调试框架底层的部分代码等方式。路还很长,还要不断的努力。

    实体类中没有填充 insert 后的 id

      通常执行 insert 后会返回语句的影响行数,我说的是数据库的 insert 语句。但是很多时候,我们需要的不是影响行数,而需要的是返回 insert 后新纪录的 id 值。

      在 Guns 框架中,我使用了其提供的默认的 insert 方法,在 insert 后,实体类中并没有填充 insert 后的 id ,这样对于在 Service 进行一对多插入时就很不方便了。至于为什么在 insert 后 Guns 没有在实体类中填充 id ,我猜测是因为数据库 id 列使用了“自增列”的原因,仅仅是猜测。

    MyBatis 获取插入记录的 id

      在 MyBatis 中对 insert 有一些属性的描述,其中包括:

    useGenerateKeys:该属性令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来获取由数据库内部生成的主键,该属性默认为 false;

    keyProperty:唯一标记一个属性, MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认为 unset。

      因此,在 Guns 中自行增加了一个 insert 的方法,对应的 MyBatis 如下所示:

    1 <!-- 插入限行记录 -->
    2 <insert id="insert" keyProperty="id" useGeneratedKeys="true" parameterType="">
    3 
    4 </insert>

      具体的语句和参数类型就不往出贴了,只要增加了 keyProperty 和 useGeneratedKeys 两个属性 Guns 在进行 insert 后,会将 insert 的 id 值填充入实体类中。


    我的微信公众号:“码农UP2U”

  • 相关阅读:
    Nacos微服务部署(超详细)基于Centos7
    Centos7配置Mysql5.7数据库
    django搭建web (一)
    NetFPGA-1G-CML Demo --- reference_router_nf1_cml
    Linux下Java通用安装方法
    NetFPGA-1G-CML Demo --- openflow_switch
    原型设计(结对第一次)
    第二次作业——个人项目实战
    游戏
    python学习笔记-问题
  • 原文地址:https://www.cnblogs.com/tosser/p/9198342.html
Copyright © 2020-2023  润新知