现在的项目改用 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 如下所示:

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

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


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

MyBatis 获取插入记录的 id的更多相关文章

  1. Mybatis获取插入记录的自增长ID(转)

    1.在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名,而不是表格的字段名. <ins ...

  2. Mybatis 获取插入记录的自增长ID

    1.在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名,而不是表格的字段名. <ins ...

  3. Mybatis获取插入记录的自增长ID

    转自:http://blog.csdn.net/tolcf/article/details/39035259 1.在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“k ...

  4. MyBatis获取插入记录的自增长字段值

    在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名! <insert id=" ...

  5. SSM获取表单数据插入数据库并返回插入记录的ID值

    以下指示插入操作以及获取记录值的ID的部分操作代码!!! 首先是简单的表单实现 <%@ page language="java" contentType="text ...

  6. 初学JDBC,获取插入记录的主键、执行批量操作

    一.获取插入记录主键值 在创建语句的地方使用Statement.RETURN_GENERATED_KEYS标识一下,然后通过getGeneratedKeys方法获得 preparedStatement ...

  7. ThinkPHP框架返回插入记录的id号

    ThinkPHP返回插入记录的id号 $Form->create()) $result = $Form->add(); 在执行上述语句后,若存在auto_increment字段,则可以使用 ...

  8. yii框架学习(获取插入后的id)

    插入单条数据, 获取插入数据的id. $model->attributes['id']; new  model 添加数据的时候, 需要注意, 如果是想要循环添加多条数据的情况, new mode ...

  9. MyBatis插入数据之后返回插入记录的id

    MyBatis插入数据的时候,返回该记录的id<insert id="insert" keyProperty="id" useGeneratedKeys= ...

随机推荐

  1. 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 8

    23.5.2  架构详解 本例的实现最重要的就是服务层的设计,有两个配置文件config.php和api.php,其中文件config.php是全局的配置文件,用于整个程序全局需要的参数设置.可以根据 ...

  2. vue 开发常见问题解决大全

    vue添加favicon.ico,包含开发环境和生产环境显示. 1.把图标放在下项目的根目录.. 2.修改build文件夹下面的webpack.dev.conf.js(开发环境) 和webpack.p ...

  3. jQuery 源码分析(十七) 事件系统模块 实例方法和便捷方法 详解

    实例方法和便捷方法是指jQuery可以直接通过链接操作的方法,是通过调用$.event上的方法(上一节介绍的底层方法)来实现的,常用的如下: on(types,selector,data,fn,one ...

  4. Mysql - 存储过程 - 定时删表

    在工业监控里面, 需要对每天的数据, 进行记录, 时间长了之后, 数据库很容易撑爆. 这时候, 如果允许, 可以对之前的数据进行一次清除, 只记录几个月内的数据. delimiter $ DROP P ...

  5. 一篇短文带您了解一下EasyCaching

    前言 从2017年11月11号在Github创建EasyCaching这个仓库,到现在也已经将近一年半的时间了,基本都是在下班之后和假期在完善这个项目. 由于EasyCaching目前只有英文的文档托 ...

  6. 好久没玩laravel了,今天玩下Laravel项目迁移步骤

    .在新的目录中克隆git远程版本库 .执行composer install安装依赖 .执行php artisan key:generate生成key 好久没玩laravel了,今天玩下Laravel项 ...

  7. C#关闭多线程程序

    Process[] processes = System.Diagnostics.Process.GetProcesses(); //获得所有进程 foreach (Process p in proc ...

  8. C# MediaPlayer

    using System.Windows.Media; using Newtonsoft.Json; using System.ComponentModel; namespace ConsoleApp ...

  9. EF框架访问access数据库入门(后附官方推荐“驱动”版本)

    vs2017调试通过. 1.添加需要的provider,有点添加驱动的意思.右击项目,NUGET “浏览”,“JetEntityFrameworkProvider”,安装,如图 完成后配置文件(控制台 ...

  10. Java日期时间API系列4-----Jdk7及以前的日期时间类的线程安全问题

    1.Date类为可变的,在多线程并发环境中会有线程安全问题. (1)可以使用锁来处理并发问题. (2)使用JDK8  Instant 或 LocalDateTime替代. 2.Calendar的子类为 ...