背景:目前有个插入语句需要获取插入记录的id  因为id是自增长的,所以要在插入后返回这个id

错误1:

mapper.xml:

<!-- 新增    返回自增长id-->
<insert id="save" parameterType="pd" resultType="int">
insert into sys_push(
username,title,content,publisher,pushtime
) values (
#{username},#{title},#{content},#{publisher},#{pushtime}
)
</insert>

我天真的以为  需要用resultType返回一个int类型的,结果项目启动直接报错了,因为insert方法根本就没有resultType! 哎 基础不扎实啊。。。

之后百度了下 哦 原来返回id是这么用的

正确: keyProperty="id" useGeneratedKeys="true"

<!-- 新增    返回自增长id-->
<insert id="save" keyProperty="id" useGeneratedKeys="true" parameterType="pd">
insert into sys_push(
username,title,content,publisher,pushtime
) values (
#{username},#{title},#{content},#{publisher},#{pushtime}
)
</insert>

重新启动后   调用查询语句发现:

int id = pushService.save(pd);

怎么id都是1。。。。

错误2:

又百度了一下,原来insert这个返回值返回的是插入成功的条数,不是id啊。。。哎 基础不扎实啊。。。

正确:

在查询后,要获取的id其实已经在传入对象的参数里了,用xx.getId()方法就可以直接获取到了。

int insertNum = pushService.save(pd);//插入的条数
Long id = (Long) pd.get("id");//获取id

我这里传入的是封装的pd对象,获取方法是get("id")

如果是传入user类,获取方式是      Long id = user.getId();//该对象的自增ID

注意: 返回的id是long类型

over!

mybatis 插入语句 返回自增长id方法的更多相关文章

  1. MyBatis插入语句返回主键值

    插入语句xml代码: <insert id="insertUser" parameterType="com.spring.mybatis.po.User" ...

  2. mybatis插入是返回主键id

    <!-- 插入数据:返回记录的id值 --> <insert id="insertOneTest" parameterType="org.chench. ...

  3. 关于mybatis插入数据库返回主键id

    关于Sequence主键的数据库来说,如: <insert id="add" parameterType="vo.Category"> <se ...

  4. Mybatis插入数据返回主键ID

    <insert id="add" parameterType="com.dsa.core.base.model.ProductSync">      ...

  5. Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  6. MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  7. MyBatis 插入时返回刚插入记录的主键值

    MyBatis 插入时返回刚插入记录的主键值 一.要求: 1.数据库表中的主键是自增长的,如:id: 2.获取刚刚插入的记录的id值: 二.源代码: 1.User.java package cn.co ...

  8. Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了

    insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...

  9. Mybatis 插入后返回数据库自动增长ID

    MySQL和MSSQL返回主键方法 在personMap.xml中 <insert id="addPerson" parameterType="orm.Person ...

随机推荐

  1. 查一张表占多少空间Bytes

    SELECT SUM(BYTES)/1024/1024||'MB' 占用空间 FROM dba_segments WHERE segment_name = '表名' AND owner = '用户名' ...

  2. Linux终端Terminal常用快捷键

    快捷键 功能CTRL+ALT+T 打开终端Ctrl+a 光标移动到开始位置Ctrl+e 光标移动到最末尾Ctrl+k 删除此处至末尾的所有内容Ctrl+u 删除此处至开始的所有内容Ctrl+d 删除当 ...

  3. 带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变

    带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变 转 https://blog.csdn.net/qq_30993595/article/details/78915115   近期有 ...

  4. Python - 二叉树, 堆, headq 模块

    二叉树 概念 二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树), 或者由一个根结点和两棵互不相交的.分别称为根结点的左子树和右子树组成. 特点 每个结点最多有两颗子树,所 ...

  5. maven settings.xml详解

    setting.xml配置文件 http://blog.csdn.net/u012152619/article/details/51485152 maven的配置文件settings.xml存在于两个 ...

  6. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在线教育视频站点介绍

    笔记 第一章项目介绍和前期准备 1.SpringBoot整合微信支付开发在线教育视频站点介绍     简介: 课程介绍,和小D课堂在线教育项目搭建开发 1.课程大纲介绍         2.微信支付项 ...

  7. python 实例方法、类方法和静态方法

    #!/usr/bin/env python3.6 #-*- coding:utf-8 -*- # class Person(object): city = 'Beijing' def __init__ ...

  8. mysql安装报vcruntime140.dll缺失

    mysql安装报:vcruntime140.dll缺失 安装:Visual C++ Redistributable for Visual Studio 2015 可以解决此问题

  9. playbook常用操作

    playbook常用操作 1.检查playbook语法错误 ansible-playbook -i hosts deploy_coredns.yaml --syntax-check 2.查看playb ...

  10. Spring Cloud(0):目录

    Spring Cloud(1):概览 Spring Cloud(2):服务发现(Eureka) Spring Cloud(3):配置服务(Config) Spring Cloud(4):断路器(Hys ...