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


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • getElementById获取元素

    getElementById获取元素<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metaname=”viewport”content=”width=device-width,initial-scale=1.0″><metahttp-equiv=”X-UA-Compatible”content=”ie=edge”><title>D.

  • 电脑蓝屏错误代码0x000000ED_蓝屏代码0x000000ed

    电脑蓝屏错误代码0x000000ED_蓝屏代码0x000000ed电脑蓝屏的原因很多,显示的电脑蓝屏也不一样,对应的修复电脑蓝屏的方法也不同。最近就有网友反映自己的电脑蓝屏代码0x000000ed怎么办,该怎么修复电脑蓝屏呢?今天小编就教下大家电脑蓝屏代码0x000000ed的解决方法。1、蓝屏0x000000ed代码为加载引导时失败,首先先尝试重启。2、如果不能解决的话,重启电脑按住F8,选择进入安全模式,然后进入安全模式桌面。2、进入安全模式后,选择左下角开始菜单,依次选择“所有程序”-“附件”-“命令提示符”右键选择以管理员打开。或者直接快捷键win

  • centos mysql 1045 错误

    centos mysql 1045 错误1、停用MySQL服务:#/etc/rc.d/init.d/mysqldstop2、输入命令:#mysqld_safe–user=mysql–skip-grant-tables–skip-networking&3、登入数据库:#mysql-urootmysql4、mysql>usemysql; 结果如下:  Databasecha

  • kafka和flume区别

    kafka和flume区别Flume更趋向于消息采集系统,Kafka更趋向于消息缓存系统。 kafka:目前项目中主要是用来做消息推送中间件,消息的处理完全由业务方自己定义,请求频次单机吞吐量轻轻松松50W+/s,数据在集群不全挂的情况下是不会丢数据,消费也很灵活,可以指定分区和offset,可以当做成一个数据库。 flume:用来做数据采集和落地,目前使用的是flume-ng,流程是source(kafka)->channel->hdfs相比较kafka比较轻量级,就是一个数据的流通管道,当..

  • keil5破解失败【经验分享】

    keil5破解失败【经验分享】有些小伙伴在输入license时会出现这种情况解决办法:使用管理员方式运行keil5

  • 小米的创新发展模式_小米生态链模式简介

    小米的创新发展模式_小米生态链模式简介自从雷军召开小米手机发布会后,小米手机是否能做成,销量多少就成为业界一大话题。小米手机的关键词一度成为百度十大热门关键词。这一现象在产品界恐怕仅有苹果的iPhone才有此殊荣。 但业界绝大部分人士不看好,特别是手机界专业人士。最近小米手机又传出零配件供应问题,专业人士更是质疑声一片。做软件的到底不会做硬件,互联网销售在手机领域不行的论断不绝于耳。而形成反差的是,在市场上小米手机的预订却是火热异

发表回复

您的电子邮箱地址不会被公开。

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