首页
学习
活动
专区
圈层
工具
发布

【MyBatis框架点滴】——mybatis插入数据返回主键(mysql、oracle)

主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A、B中插入数据(A的主键是B的外键),向A表中插入数据之后,向B表中插入数据时需要用到A的主键。...id }   这里总结一下mybatis插入数据时返回主键的4种情况:mysql环境下主键自增、mysql环境下主键为uuid、mysql环境下主键自增、mysql环境下主键为uuid。   ...数据库为mysql ---- 主键为自增时(主键为数值类型且自增)   利用mysql的LAST_INSERT_ID()方法获取插入记录的主键,select LAST_INSERT_ID()可以在插入数据后...,查询并返回刚插入数据的主键(但是单独执行这条语句只会返回0)。...主键为UUID时(主键必须为字符类型)   使用mysql的方法UUID()方法获取随机的UUID作为主键,select UUID()可以在插入数据前,生成随机的UUID并通过keyProperty赋值给将要插入记录的主键

2.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 8 列出相关依赖 使用CTE(公共数据表达式)

    直接 SQL 实现递归的 with 语法——公共数据表达式 Common Table Expressions (CTE) 是一个命名的临时结果集,它存在于单个语句的范围内,并可能在该语句后面引用,可能会多次...varchar(20) null comment '作业ID', depend_job_id varchar(20) null comment '依赖作业' )comment '作业依赖'; # 插入测试数据...child B ON A.depend_job_id = B.job_id ) SELECT * FROM parent UNION SELECT * FROM child ORDER BY level; MySQL...8 两个新特性 公共数据表达式(临时结果集)官方文档: https://dev.mysql.com/doc/refman/8.0/en/with.html 窗口函数(逐行统计函数)官方文档: (不用...group by 而在每行显示类似 sum() 等结果,用来实现排名和占比等功能) https://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html

    1.1K80

    MySQL 8 列出相关依赖 使用CTE(公共数据表达式)

    直接 SQL 实现递归的 with 语法——公共数据表达式 Common Table Expressions (CTE) 是一个命名的临时结果集,它存在于单个语句的范围内,并可能在该语句后面引用,可能会多次...varchar(20) null comment '作业ID', depend_job_id varchar(20) null comment '依赖作业' )comment '作业依赖'; # 插入测试数据...child B ON A.depend_job_id = B.job_id ) SELECT * FROM parent UNION SELECT * FROM child ORDER BY level; MySQL...8 两个新特性 公共数据表达式(临时结果集)官方文档: https://dev.mysql.com/doc/refman/8.0/en/with.html 窗口函数(逐行统计函数)官方文档:...(不用 group by 而在每行显示类似 sum() 等结果,用来实现排名和占比等功能) https://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html

    97950

    【Java】JDBC编程实现对数据库表的增删改查操作

    ---- 一、准备工作 下载MySQL驱动jar包,资源直达:http://t.csdn.cn/TZRBw 二、准备数据 创建所需的数据库及表 代码 #创建数据库 CREATE DATABASE jdbc...语句,并返回结果      5.处理结果      6.关闭连接 五、代码实现 Driver接口:Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。...Connection接口:Java程序和数据库的连接对象。 Statement接口:用于执行静态的SQL语句,并返回一个结果对象。SQL语句的执行者,通过Connection接口对象获取。...serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=true"; String user="root";// 数据库用户名 String pw=...java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.mysql.cj.xdevapi.Statement

    1K50

    MySQLMariaDB表表达式(3):视图「建议收藏」

    今天说一说MySQL/MariaDB表表达式(3):视图「建议收藏」,希望能够帮助大家进步!!! 视图是表表达式的一种,所以它也是虚拟表。对视图操作的时候会通过语句动态的从表中临时获取数据。...`ID` > 200) character_set_client: utf8 collation_connection: utf8_general_ci 1 row in set (0.00 sec)...在这一点上MySQL/MariaDB和其他类型的数据库有些不一样。如果在某种条件下,视图的定义语句from字句正好需要的是子查询,可以将这个子查询先定义成视图,再将视图放在from字句中。...temptable将视图的结果放入临时表中,然后使用该表的数据执行对应语句操作。 undefined是让MySQL/MariaDB自己选择merge还是temptable,它更倾向于merge。...MySQL/MariaDB中不存在show view status语句。可以使用show table status表和视图的状态信息,使用show tables显示出数据库中的表和视图。

    1.5K20

    MySQL 之 JSON 支持(一)—— JSON 数据类型

    与将 JSON 格式字符串存储在字符串列中相比,JSON 数据类型提供了以下优点: 自动验证存储在 JSON 列中的 JSON 文档,无效文档会产生错误。 优化的存储格式。...MySQL 解析上下文中使用的任何需要 JSON 值的字符串,如果该字符串作为 JSON 无效,则会产生错误。...这些上下文包括将值插入到具有 JSON 数据类型的列中,或将参数传递给期望 JSON 值的函数(在 MySQL JSON 函数文档中通常显示为 JSON_doc 或 JSON_val),如下例所示: 将值插入...有些函数使用现有的 JSON 文档,以某种方式对其进行修改,然后返回修改后的文档。路径表达式指示在文档中进行更改的位置。...和 JSON 文本一样,路径表达式应使用 ascii、utf8mb3 或 utf8mb4 字符集进行编码。其它字符编码被隐式地强制转换为 utf8mb4。

    8K30

    全面解析MySQL(3)——CRUD进阶&数据库约束

    1.插入查询结果 MySQL中insert into ... select ...语句用于将select的查询结果插入到目标表中。...一般用于数据的迁移或备份 注意: 1.插入语句不使用value关键字 2.确保目标表和查询结果的列数、数据类型匹配 2.常用聚合函数 MySQL聚合函数用于对一组值执行计算并返回单个值,常用于数据统计和分析...它们定义了数据在存储和操作过程中必须满足的条件,从而防止无效或不一致的数据进入数据库。...,但在class表中没有对应的班级,所以这是一条无效的数据。...外键约束防止了这种无效的记录插入 4.7 检查约束 检查约束 (Check Constraint):定义列值必须满足的条件表达式,通常涉及逻辑或数学条件,如范围检查或格式验证 #创建表 #check

    10710

    MySQL或者MariaDB里面sql_mode的设置详解

    全部sql_mode MySQL版本<=5.6.5 默认为空 可选值如下: 参数 含义及示例 ALLOW_INVALID_DATES 允许无效的日期插入到数据库(无效的日期插入时候会有warning,但仍能插入...TIMESTAMP总是要求一个合法的输入。...【默认情况下,MySQL把实数当double同义词】double 8字节float 4字节real8字节 STRICT_ALL_TABLES 严格模式 STRICT_TRANS_TABLES 严格模式...但二者还有些区别: 严格模式控制MySQL如何处理非法或丢失的输入值。有几种原因可以使一个值为非法。例如,数据类型错误,不适合列,或超出范围。...如果语句插入或修改多行,并且坏值出现在第2或后面的行,结果取决于启用了哪个严格选项: 对于STRICT_ALL_TABLES,MySQL返回错误并忽视剩余的行。

    3K20

    深入剖析MySQL数据库约束:原理、应用与实践

    检查约束则允许定义一个布尔表达式,插入或更新的数据必须满足这个表达式的条件才能成功执行。...2.2.6 检查约束(CHECK) 检查约束是一种用于限制列中的值满足特定条件或表达式的约束。它允许定义一个布尔表达式,插入或更新的数据必须满足这个表达式的条件才能成功执行。...张三', 'zhangsan@example.com', 'password123', 25); 如果再次执行相同的插入语句,由于user_id为 1 的记录已经存在,MySQL 数据库会返回错误信息,...检查约束允许用户定义一个布尔表达式,在插入或更新数据时,数据库会自动检查新数据是否满足这个表达式所设定的条件。...当插入或更新成绩数据时,如果输入的成绩值小于 0 或大于 100,数据库会拒绝该操作,并返回错误提示,从而保证了成绩数据的有效性和合理性。

    1.2K10
    领券