在 MySQL 中主键自增字段,在插入后往往需要获得这个主键,以便于后面的操作,而 MyBatis 提供了实现的方法。

首先可以使用 keyProperty 属性指定哪个是主键字段,同时使用 useGeneratedKeys 属性告诉 MyBatis 这个主键是否使用数据库内置策略生成。

<insert id="addStudent" parameterType="com.pojo.Student" useGeneratedKeys="true" keyProperty="stud_id">insert into students (name,email,dob) values (#{name},#{email},#{dob})
</insert>
useGeneratedKeys (仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键,默认值:false。
keyProperty   (仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
keyColumn (仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。

接口定义:

public void addStudent(Student student);

java bean 对象:

public class Student {private int stud_id;private String name;private String email;private Date dob;/*getter setter*/public Student(String name, String email, Date dob) {this.name = name;this.email = email;this.dob = dob;}
}

测试:

package com.main;import com.mapper.StudentMapper;
import com.pojo.Student;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;
import java.util.*;public class Main {public static void main(String[] args){InputStream inputStream = Main.class.getResourceAsStream("/mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);Student student = new Student("haha","haha@qq.com",new Date());studentMapper.addStudent(student);sqlSession.commit();System.out.println(student);}
}

Mybatis—— 主键回填相关推荐

  1. MyBatis主键回填和自定义主键

    MyBatis主键回填和自定义主键 1. 主键回填 JDBC中的Statement对象在执行插入的SQL后,可以通过getGeneratedKeys方法获得数据库生成的主键,这样便能达到获取主键的功能 ...

  2. MyBatis主键回填

    方式一 <insert id="insertBook" useGeneratedKeys="true" keyProperty="id" ...

  3. Mybatis 主键回显 KeyGenerator原理

    这篇文章研究下 Mybatis 配置主键回显相关功能. 本篇文章将以以下几个问题切入: Mybatis 如何 配置主键自增回显? JDBC 主键回显用法? 对于不支持自增主键数据库,Mybatis 有 ...

  4. mybatis主键生成策略和mp主键生成策略

    mybatis主键生成策略和mp主键生成策略 1,mybatis plus 主键生成策略 都是通过给实体类的属性添加注解的方式执行type = IDTYPE- ​ 1,AUTO数据库ID自增 ​ 2, ...

  5. mybatis 主键自增 insert后返回主键

    mybatis 主键自增 insert后返回主键 : <insert id="insertStudentAutoKey" parameterType="Studen ...

  6. 轻量级封装DbUtilsMybatis之四MyBatis主键

    MyBatis主键 不支持对象列表存储时对自增id字段的赋值(至少包括3.2.6和3.3.0版本),如果id不是采用底层DB自增主键赋值,不必考虑此问题 温馨提示:分布式DB环境下,DB主键一般会采用 ...

  7. Mybatis中selectKey 标签的作用,主键回填,找了好多文章没一个解释清楚。。

    (1)没有配置selectKey 标签时候插入数据: <insert id="addUser" parameterType="model.User"> ...

  8. @MyBatis主键返回

    在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能. 比如在表的关联关系中,将数据插入主 ...

  9. mysql mybatis 主键id_MyBatis+MySQL 返回插入的主键ID-Go语言中文社区

    需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法:在mapper中指定keyProperty属性,示例如下: insert into user(user ...

最新文章

  1. Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler
  2. ad16自动布线设置规则_设计 | 18种pcb设计特殊布线的画法与技巧!
  3. 安装composer以及laravel框架
  4. 文件查询之三:文件和目录的批量操作
  5. mojing SDK根据坐标进行移动
  6. 查询相关股票十档行情的方法
  7. 深度学习菜鸟的信仰地︱Supervessel超能云服务器、深度学习环境全配置
  8. 阿里云linux主机更新hostname
  9. bootstrap datetimepicker日期插件使用方法
  10. 企业从信息化角度解读智慧城市,难以根治城市病
  11. java生成流程图_java源代码转换为流程图
  12. 苹果电脑更改sd卡只读_SD内存卡禁止写入只读怎么办?另类SPI模式修复坏卡
  13. python 文本处理---英文文本预处理(简单易懂 全有注释)!!!!!使用正则表达式以及nltk库分词器双方法!
  14. 演讲的思路锻炼,逆向思维需要刻意练习吗?
  15. 目标跟踪常用算法——EKF篇
  16. CodeForces - 1538G Gift Set (二分)
  17. 这个Excel函数,推荐所有人学习!HR都说必须会
  18. 读取csv文件并将其转化为tsv文件
  19. opencv python教程简书_OpenCV-Python教程:57.图像修复
  20. 学习笔记 吴恩达 斯坦福大学公开课 :机器学习课程-1 机器学习的动机与应用

热门文章

  1. [DIY]小日子过得不错的日本松下吹风机
  2. 迷你WIFI摄像机五个优势点不可忽略
  3. 全网最全的 Java 面试题汇总,爱了~
  4. 泰隆银行笔试记录(3.22个别题)
  5. c语言uart串口通讯,uart串口通信c语言实现
  6. 3分钟自定义你的chatGPT聊天微信机器人
  7. 【GitLab、Jira、Confluence 单点登录实现】之 CAS 系统部署
  8. 【转】深圳FAE,想拿高薪还缺什么?
  9. openAI--十拳剑助你做AI时代的弄潮儿
  10. 教你如何对付惹人讨厌的职场小人?...