mybatis generator配置独立sequence

mybatis generator配置独立sequence

正常情况下mybatis 使用last_insert_id()就可以了,但为了防止同时插入多条产生的不正确的情况,还是用独立的sequence表好
全局用一个还能隐藏,不会被人猜到。
注意:
字段一定要用无符号的:bigint,以免溢出。

mysql 数据大小 int 4294967295 ,bigint 18446744073709551615


附配置文件:
<table tableName="%">
    <!--只生成model文件,如果mapper做过修改了就这样生成-->  <!--<property name="modelOnly" value="true"/>-->   <!--todo 这样的写法有问题的。因为last_insert_id()返加第一条插入的数据的id,如果一次插入多条数据,返回的id就是错的了。-->  <!--所以,最好独立建一个sequence来处理,如下  参考:https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id  mysql> CREATE TABLE sequence (id INT NOT NULL);  mysql> INSERT INTO sequence VALUES (0);  mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);  mysql> SELECT LAST_INSERT_ID();   表建好后不能直接用,要先建一个function,再用 select seq() 来替代 select LAST_INSERT_ID()就行了。  下面是建function步骤:  第一步drop  DROP FUNCTION IF EXISTS seq   第二步:定义  delimiter $$  CREATE FUNCTION seq() RETURNS INT  BEGIN  DECLARE RETID int;  UPDATE sequence SET id=LAST_INSERT_ID(id+1);  SELECT LAST_INSERT_ID() INTO RETID ;  RETURN RETID;  END$$   第三步:提交定义  delimiter ;   第五步:调用  select seq()  -->   <!--insert语句如果要返回自动生成的key值,一般会在insert里加入useGeneratedKeys属性,如下配置可以实现.用对象的getId()来获得数据-->  <generatedKey column="id" sqlStatement="SELECT seq()" identity="true" type="post"/>
    <!--<generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" />-->  </table>

参考:http://blog.haohtml.com/archives/15222


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100428.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月12日 上午8:00
下一篇 2021年5月12日 上午9:00


相关推荐

  • linux防ddos攻击工具 DoS Deflate

    linux防ddos攻击工具 DoS DeflateDoSDeflate 是一个轻量级阻止拒绝服务攻击的 bashshell 脚本 我们可以根据自己需要修改特定参数 来达到目的 安装 卸载都很简单 分别执行下面三步就可以了 安装 wgethttp www inetbase com scripts ddos install shchmod0700i sh install sh 卸载 wgethttp www inetbase com scripts ddos uninstall ddoschm

    2026年3月26日
    3
  • 安徽:AI大模型再进阶

    安徽:AI大模型再进阶

    2026年3月14日
    1
  • SQL Server 配置管理器无法打开

    SQL Server 配置管理器无法打开在把机器重启后SQLSERVER配置管理器就无法正常打开了

    2022年7月20日
    18
  • 医学图形图像处理(医学影像和医学图像处理)

    文章目录1图像和数字图像1图像和数字图像  数字图像:被定义为一个二维函数,f(x,y),其中x,y代表空间坐标,f代表点(x,y)处的强度或灰度级。和普通的笛卡尔坐标系有区别,在计算机中坐标系左上角为原点:  图像数字化:图像进入计算机后,对图像进行数字化(映射)。数字图像三要素:  (1)像素:大小决定了图像存储、显示的清晰度;  (2)灰度值:通常为0-255,因为在计算机中通常用一个字节来表示一个像素,即28。  (3)坐标  图像存储在计算机中会丢失信息,因为是从一个连续的

    2022年4月15日
    58
  • latex多行公式一个编号_word输入latex公式

    latex多行公式一个编号_word输入latex公式注:本人不提供任何版本的Mathtype软件安装包。前面分享了6.x版本Mathtype在高版本Word中安装插件的方法:如何在MSWord中添加Mathtype插件?但是我发现大多数人使用Mathtype编辑公式的效率极低,主要体现在不管啥命令都用鼠标在Mathtype的UI界面中选择,这样势必会花费很多时间,因为手一会儿在键盘上,一会儿在鼠标上,很容易分心。…

    2022年10月11日
    4
  • 【Oracle】truncate和delete区别

    【Oracle】truncate和delete区别truncatetabl 和 delete from 的区 bai 别为 释放数据不同 清空标识不 du 同 触发器不同 zhi 一 释放数据不同 1 truncatetabl truncatetabl 直接释放数据页 dao 并且在事务日志中也只记录数据页的释放 2 delete from delete from 是一行一行地释放数据 在事务日志中要记录每一条记录的删除 二 清空标识不同 1 truncatetabl truncatetabl 不仅是删除表里面的数据 而且还会清空表里面

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号