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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 浅聊:ES6模板字符串与一般字符串

    浅聊:ES6模板字符串与一般字符串一.模板字符串与一般字符串区别二.模板字符串的一些注意事项一.模板字符串与一般字符串区别1,认识模板字符串:’xiaozhang’ //一般字符串`xiaozhang` //模板字符串(用两个反引号裹着)constusername1=’xiaozhang’;constusername2=`xiaozhang`;console.log(username1,username2,usern..

    2022年8月21日
    16
  • 查oracle的tps,Oracle TPS指标[通俗易懂]

    查oracle的tps,Oracle TPS指标[通俗易懂]定义TPS:TransactionsPerSecond(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS=CAPS×每个呼叫平均TPS)TPMC:TransactionsPerMinute(每分钟处理的交易量),tpmC值在国内外被广泛用于衡量计算机系统的事务处理能力。–查看某段时间数据库的TPS指标,通过…

    2022年8月30日
    2
  • Python文本情感分析_Python数据分析实战

    Python文本情感分析_Python数据分析实战本文由来为了赚足学分丰富假期生活,初衷是分析老师对学生作业的评价和学生对老师的评价的。本来这个任务是在N多天前就应该完成了,无奈本人懒癌晚期+拖延症不想治疗,不是因为火烧眉毛就绝对没有今天的文章。本文旨在记录自己的学习过程,就这样,开干啦!序幕既然题目是“基于情感词典的文本情感分析”,那么情感词典就是必不可少的了。对于情感词典的要求:要包含积极的词语和消极的词语、每一种类的数量要足够多、包含足够广…

    2022年8月23日
    7
  • EBS安装完成后,对数据库相关配置的改动

    EBS安装完成后,对数据库相关配置的改动

    2021年11月14日
    44
  • 汇编语言标志位介绍

    汇编语言标志位介绍一、运算结果标志位1、进位标志CF(CarryFlag)进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。2、奇偶标志PF(ParityFlag)奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如…

    2022年7月12日
    22
  • 笔记本没有声音,f1一直亮_为什么笔记本按f1不静音

    笔记本没有声音,f1一直亮_为什么笔记本按f1不静音某个平凡的晚上,博主正准备听会儿音乐却发现怎么也打不开声音,通知键盘左上的F1健一直亮着。几经搜寻终找到如下解决方案:win+r出对话框,然后输出services.msc后会出现如下的界面,然后找到LenovoHotkeyClientLoader,点进去选择重启然后再按F1灯就灭了,还能外放了以上只是经过本人试验的有效方法之一,大家可在遇到类似情况时试一试,有其他更好方法的朋友欢迎在评论区补充。…

    2022年9月15日
    2

发表回复

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

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