1、Mybatis的基础配置

https://blog.csdn.net/qq_43163943/article/details/110261144

2、Mybatis自增主键的实现

执行顺序是先插入,再查询主键

1)mysql中的自增主键返回的语法

insert into user(username,password,salt,phone,created,last_login_time,status)
VALUES('xxx','xxx','xxx','xxx','2020-10-10','2020-10-10',1);
SELECT LAST_INSERT_ID();

SELECT LAST_INSERT_ID():表示返回插入语句的主键id。

2)Mybatis中的实现

User.xml

<!--    插入数据--><insert id="insertUser" parameterType="com.gxa.pojo.User">-- selectKey:表示实现主键返回-- keyColumn:数据库表中主键对应的一列-- keyProperty:表示pojo中对应的主键列-- order:设置是在insert语句之前执行还是之后执行,AFTER表示之后,BEFORE表示之前-- resultType:表示返回的id类型<selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="long">select last_insert_id()</selectKey>insert into user(username,password,salt,phone,created,last_login_time,status)values(#{username},#{password},#{salt},#{phone},#{created},#{lastLoginTime},#{status})</insert>

测试类

 @Testpublic void testInsert() {//4、获得sqlSessionSqlSession sqlSession = sqlSessionFactorybuild.openSession();//username,password,salt,phone,created,last_login_time,statusUser user = new User(null, "哈哈哈", "123123", "xxxx", "qqqqq", new Date(), new Date(), 1);sqlSession.insert("insertUser", user);sqlSession.commit();System.out.println(user.getId());}

注意:如果传的是地址,mybatis查询出了自增的主键,会自动将查询出来的值设置进去

3、Mysql使用uuid生成主键

执行顺序是先通过uuid生成主键,然后再插入

1)Mysql中生成uuid语法

select UUID():生成一个全球唯一的编号

insert into user2(username,password,salt,phone,created,last_login_time,status)
VALUES('xxx','xxx','xxx','xxx','2020-10-10','2020-10-10',1);
SELECT UUID();

User.xml

<!--    插入数据--><insert id="insertUserIdUUID" parameterType="com.gxa.pojo.User2">-- selectKey:表示实现主键返回-- keyColumn:数据库表中主键对应的一列-- keyProperty:表示pojo中对应的主键列-- order:设置是在insert语句之前执行还是之后执行,AFTER表示之后,BEFORE表示之前-- resultType:表示返回的id类型<selectKey keyColumn="id" keyProperty="id" order="BEFORE" resultType="string">select UUID()</selectKey>insert into user2(id,username,password,salt,phone,created,last_login_time,status)values(#{id},#{username},#{password},#{salt},#{phone},#{created},#{lastLoginTime},#{status})</insert>

测试类

@Testpublic void testInsertUserIdUUID() {//4、获得sqlSessionSqlSession sqlSession = sqlSessionFactorybuild.openSession();//username,password,salt,phone,created,last_login_time,statusUser2 user = new User2(null, "哈哈哈", "123123", "xxxx", "qqqqq", new Date(), new Date(), 1);//如果传的是地址,mybatis查询出了自增的主键,会自动将查询出来的值设置进去sqlSession.insert("insertUserIdUUID", user);sqlSession.commit();System.out.println(user.getId());}

注意:使用uuid当主键,id的类型应该为String类型

4、Mysql自增主键的简化版

User.xml

   <!--    插入数据-->
<!--    useGeneratedKeys:表示是否返回自增的id,true表示“是”keyProperty:表示给哪个属性赋值,与pojo中的id一致--><insert id="insertUser2" parameterType="com.gxa.pojo.User" useGeneratedKeys="true" keyProperty="id">insert into user(username,password,salt,phone,created,last_login_time,status)values(#{username},#{password},#{salt},#{phone},#{created},#{lastLoginTime},#{status})</insert>

测试类

 @Testpublic void testInsert2() {//4、获得sqlSessionSqlSession sqlSession = sqlSessionFactorybuild.openSession();//username,password,salt,phone,created,last_login_time,statusUser user = new User(null, "哈哈哈", "123123", "xxxx", "qqqqq", new Date(), new Date(), 1);//如果传的是地址,mybatis查询出了自增的主键,会自动将查询出来的值设置进去sqlSession.insert("insertUser2", user);sqlSession.commit();System.out.println(user.getId());}

mysql自增主键的返回相关推荐

  1. mysql自增主键返回---创建成功后返回用户的ID

    mysql自增主键返回 查询id的sql SELECT LAST_INSERT_ID() 通过修改User.xml映射文件,可以将mysql自增主键返回: 如下添加selectKey 标签 <! ...

  2. 美团面试:MySQL 自增主键一定是连续的吗?

    美团问数据库比较多,分享一位读者面试美团遇到的关于 MySQL 自增主键的问题. 下面是正文. 众所周知,自增主键可以让聚集索引尽量地保持递增顺序插入,避免了随机查询,从而提高了查询效率 但实际上,M ...

  3. mybatis mysql自增主键_mybatis 自增主键配置

    mybatis 自增主键配置 mybatis自增主键配置(?) mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同.基本上经常会 遇到的就是 Oracle Seque ...

  4. hive导数据到mysql 自增主键出错_老大问我:“建表为啥还设置个自增 id ?用流水号当主键不正好么?”...

     前言"又要开始新项目了,一顿操作猛如虎,梳理流程加画图.这不,开始对流程及表结构了.我:吧啦吧啦吧啦 --老大:这个建表为啥还设置个自增 id ?直接用流水号(用户号/产品号)当主键不就行 ...

  5. mybatis获取mysql自增主键_Mybatis获取数据库自增主键

    一般我们都为将表中主键列设置为自增,当我们执行插入语句时,比如这样 //测试添加 Employee employee = new Employee(null, "jerry4",n ...

  6. mysql自增主键和mybatis自增主键不一致问题(已解决):

    mysql自增主键和mybatis自增主键不一致问题(已解决): 在插入数据前,先进行查询主键 <insert id="insertSelective"><sel ...

  7. mysql自增主键设置

    mysql自增主键设置 在数据库应用中,经常希望在每次插入新纪录时,系统自动生成字段的主键值.可以通过为表主键添加AUTO_INCREMENT关键字来实现. 默认情况下,在MYSQL中AUTO_INC ...

  8. 重置mysql自增主键值的方法

    重置mysql自增主键的值方法 show create table [表名] 查看当前主键索引值alter table [表名] auto_increment = [你希望的值] 设置你希望的索引值 ...

  9. Mysql 自增主键重复的问题

    问题描述 MySQL Bugs: #199: Innodb autoincrement stats los on restarthttps://bugs.mysql.com/bug.php?id=19 ...

最新文章

  1. React 项目中使用Echarts
  2. pythonwith作用_老生常谈Python startswith()函数与endswith函数
  3. 双向循环链表的冒泡排序
  4. tornado学习笔记day08-tornado中的异步
  5. nio的优势_BIO、NIO、AIO 介绍和适用场景分析
  6. html三张图片的轮播代码_vue写了个轮播图
  7. 差分进化算法python_差分进化算法DE-python实现
  8. 理论题 —— Windows 7基础知识
  9. 数据库MySQL/mariadb知识点——操作篇(4)数据操作语句
  10. C# Combobox清空值
  11. 开发IE插件Toolbar
  12. 计算机驱动空间的c盘不足怎么办,C盘磁盘空间不足怎么解决
  13. 电脑速度慢是什么问题导致的
  14. metasploit 技术功能模块介绍
  15. php网站403 forbidden,403 forbidden怎么解决
  16. 使用代理爬去微信公众号_微信公众号怎么去推广运营?企业微信公众号要如何运营?微信公众号运营技巧,你get了吗?微信怎么去推广运营?...
  17. 查看患者信息java_Java通过反射查看类的信息示例
  18. MeasurementStudio安装教程
  19. Linux shell基础之变量声明和处理
  20. 用MPAndoidChart展示搜索到的GPS及卫星信息

热门文章

  1. 关于投影仪显示图像不稳定(抖动)
  2. 机器学习平台Angel 3.0
  3. 移动硬盘一个分区“数据循环冗余错误”要求格式化解决方法
  4. 计算机运算器完整功能是进行,运算器的完整功能是进行什么
  5. WebStorm的那些使用技巧
  6. 最新校园疫情防控进出登记管理PHP系统源码
  7. 福禄克FLUKE DSX-CHA003 COAX ADAPTER同轴电缆测试模块DSX-COAX,适用于DSX2-8000 DSX2-5000
  8. openmpi参数_openMPI测试 编译 运行 及MCA框架(zz)
  9. 提供大量一级建造师资料
  10. 求二叉树深度算法(深度优先、广度优先)