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


相关推荐

  • java 静态内部类 实例化_内部类及静态内部类的实例化「建议收藏」

    java 静态内部类 实例化_内部类及静态内部类的实例化「建议收藏」内部类的实例化如果内部类未声明为static,在实例化时首先需要new一个外部类的对象。并通过p.newInner()的方式new内部类,表明这个内部类指向该外部类。内部类的class类型为:Parent.Inner,而不是p.Inner,这个需要和new的方式区分开。publicclassTest{publicstaticvoidmain(String[]args){Pare…

    2022年10月9日
    4
  • sublime text激活码【2021最新】

    (sublime text激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlML…

    2022年3月20日
    411
  • pyCharm最新2018激活码

    pyCharm最新2018激活码本教程对 jetbrains 全系列可用例 IDEA WebStorm phpstorm clion 等因公司的需求 需要做一个爬取最近上映的电影 列车号 航班号 机场 车站等信息 所以需要我做一个爬虫项目 当然 java 也可以做爬虫 但是还是没有 python 这样方便 所以也开始学习 Python 啦 欲善其事 必先利其器 这里我为大家提供了三种激活方式 nbsp nbsp nbsp 授权服务器激活 适合小白 一步

    2026年3月27日
    2
  • MySQL 数据库备份一键执行脚本 — 全库备份和增量备份

    MySQL 数据库备份一键执行脚本 — 全库备份和增量备份文章目录 1 全库备份 2 增量备份 1 全库备份 vimall db bak sh bin bash MySQL 全库备份 PATH usr local mysql bin PATH BAK1 bak1BAK2 bak2TIME date F H M S USER rootPASS if d BAK1 o d BAK2 then mkdir BAK1 mkdir BAK2 mysqldump u U

    2026年3月18日
    2
  • element-ui 表单组件的prop属性

    element-ui 表单组件的prop属性Vue 组件库 element ui 中的 Form 表单组件提供了表单验证功能通过 rules 属性传入验证规则 Form Item 中的 prop 属性设置需要校验的字段名如图所示 el form item 元素的 prop 属性绑定字段名 name 表单验证时 就会验证 el input 元素绑定的变量 ruleForm name 的值是否符合验证规则官方文档对表单属性 prop 的说明

    2026年3月17日
    2
  • MySQL删除binlog日志

    MySQL删除binlog日志MySQL 中的 binlog 日志记录了数据库中数据的变动 便于对数据的基于时间点和基于位置的恢复 但是 binlog 也会日渐增大 占用很大的磁盘空间 因此 要对 binlog 使用正确安全的方法清理掉一部分没用的日志 手动删除展示所有的 binlog showmasterst 1 删除指定时间以前的日志索引中 binlog 日志文件 PURGEMASTERL 2

    2026年3月16日
    3

发表回复

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

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