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

Mybatis获取自增长的主键id

role的主键roleId插入到user-role这个关联表中,之前因为我们是先创建在分配,所以完全可以获取到用户的userId,但是现在是要在创建的时候就分配,又因为我们的userId是在数据库中设置的自动增长...所以对于如何取得自增长的Id就比较麻烦.查阅资料后发现,还是有办法解决的.而且有两种方法,这里都分享给大家,并且我自己也都测试了,的确可用. 2.解决方案 2.1方案一 这段代码加在你的insert语句中...id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID()...,一个是执行插入操作之后再取出主键Id.前者使用与自己定义的自增长规则的id,后者就是用与我们的情况即自增长的id 小栗子: id="insertSelective" parameterType...说明的确是读取到了自增长的userId,数据也成功插入了. 2.2方案二 id="insertSelective" parameterType="请求对象" useGeneratedKeys

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

    【MySQL知识点】自动增长

    ---- 文章目录 自动增长定义 注意事项 测试 修改自动增长值 删除自动增长 添加自动增长 总结 ---- 自动增长定义 利用MySQL提供的自动增长功能来自动生成主键的值,防止插入的值重复导致插入失败...如果为自动增长字段插入NULL、0、DEFAULT或在插入时省略该字段,则该字段就会使用自动增长值;如果插入的是一个具体的值,则不会使用自动增长值。 自动增长值从1开始自增,每次加1。...如果插入的值大于自动增长的值,则下次插入的自动增长值会自动使用最大值加1;如果插入的值小于自动增长值,则不会对自动增长值产生影响。 使用DELETE删除记录时,自动增长值不会减小或填补空缺。...如下,当插入数据时省略id字段、插入null或者0时,将会使用自动增长值。 当插入具体值时,则不会使用自动增长值。...删除自动增长 添加自动增长 删除自动增长并重新添加后,自动增长的初始值会自动设为该列现有的最大值加1。

    2.3K30

    asp.net core 关于自增长ID数据保护(IDOR漏洞)

    查询列表的接口自然是要带着用户对应的主键的(通过删除接口传入ID),聪明的人应该想到了;此时ID是明文的并且主键我们一般都是自增长的,此时就会出现我们可以通过猜测这个参数进行恶意删除。嗯!...前台传入ID后台在一系列操作前进行身份信息条件筛选。(delete TableName where userID ={ID} and create_Id={login_userID})就是这么个意思。...制造这个问题的原因不就是因为ID是数字自增长吗,我只要让主键无规律不就行了,比如时间戳加随机数,再比如GUID。猜?你慢慢猜去吧。但是这里面涉及到一个小问题,性能和存储空间的问题。...(自增长主键和GUID查询性能和占用空间比较) 正如三解决方案,我只要让抛到前台的主键是无规律的并且不可轻松枚举出来好像就可以了.此处是对称加密(百度“对称加密有哪些”)。...writer.WriteStringValue(str); } } 用法: [JsonConverter(typeof(ProtectionConverter))] public long ID

    1.6K20

    技术汇总:第六章:分布式自增长ID

    package util;import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.NetworkInterface...;/** 名称:IdWorker.java 描述:分布式自增长ID Twitter的 Snowflake JAVA实现方案 1 核心代码为其IdWorker这个类实现,其原理结构如下,我分别用一个0...0 — 00000 —00000 —000000000000在上面的字符串中,第一位为未使用(实际上也可作为long的符号位),接下来的41位为毫秒级时间,然后5位datacenter标识位,5位机器ID...这样的好处是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和机器ID作区分),并且效率较高,经测试,snowflake每秒能够产生26万ID左右,完全满足需要。...64位ID (42(毫秒)+5(机器ID)+5(业务编码)+12(重复累加))@author Polim */public class IdWorker { // 时间起始标记点,作为基准,一般取系统的最近时间

    1K30

    技术汇总:第六章:分布式自增长ID

    package util; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.NetworkInterface...; /**  * 名称:IdWorker.java  * 描述:分布式自增长ID  *  *     Twitter的 Snowflake JAVA实现方案  *...* 这样的好处是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和机器ID作区分),  * 并且效率较高,经测试,snowflake每秒能够产生26万ID左右,完全满足需要...*  * 64位ID (42(毫秒)+5(机器ID)+5(业务编码)+12(重复累加))  *  * @author Polim  */ public class IdWorker {    ...偏移组合生成最终的ID,并返回ID         long nextId = ((timestamp - twepoch) << timestampLeftShift)

    88410

    sql删除一条记录后其他记录的id自动迁移,使id连续

    在写一个应用时,有这么一个操作:客户端传过来点击的位置,进行运算后得到相应数据在数据库里的id,然后显示对应的信息。...但是在进行delete后数据显示就混乱了,发现根本原因是原本连续的数据id(例如:1、2、3、4),在sqlite的delete语句执行完后(比如说删除id为2的数据),变得不连续(1、3、4)。...解决代码如下: 在执行删除时更新表,把删除位置后面的都往前移动一位 db.execSQL("delete from tb_diary2 where _id in ("+ sb + ")",...(Object[]) ids); //更新id,使id大于要删除的id的往前移动一位。...db.execSQL("update tb_diary2 set _id=_id-1 where _id > ?",(Object[] )ids); 很多网友都说这样会影响性能,应该用触发器进行操作。

    2.1K20
    领券