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


相关推荐

  • ikbc 104键win键失效

    ikbc 104键win键失效fn+del键(或者fn+r)长按五秒,看到3个指示灯闪烁,说明键盘恢复出厂设置了,也解决了当前问题。

    2022年6月4日
    178
  • 落后的失利王朝死亡

    落后的失利王朝死亡

    2022年1月11日
    48
  • Micron(美光)内存颗粒的命名规则,7lk17d9PTK,MT29F2G08ABAEA(矿机自带)

    Micron(美光)内存颗粒的命名规则,7lk17d9PTK,MT29F2G08ABAEA(矿机自带)三四十买了一个矿机主板,ddr3的芯片和flash的型号认不全,找了一些资料,如下1.DDR3芯片的识别ZYNQ7000系列ddr最多支持1G,这两个拼一起就是500M一半的样子我们随便找一个Micron的DDR3或者SPINANDFLASH,会发现丝印不是具体型号,真他妈奇怪!!!!!如:看了都有不知道什么型号的DDR芯片以前自己懵剩剩的,还好公司的硬件工程师帮我解答了多年以来的困惑:https://www.micron.com/support/tools-and-utilities

    2022年6月22日
    376
  • unsigned int在c语言中是什么意思_尿液报告里面vc什么意思

    unsigned int在c语言中是什么意思_尿液报告里面vc什么意思在一个项目中,要求用VC6写DLL,其中有字段要求用UINT16,vc6中没有UINT16。UINT16,无符号int要16位,占2字节(1字节byte=8位bit),1111111111111111,表示范围0~65535。在此,我想到用别的类型代替它,并对范围测试,下面用vc6随便建一个程序,添加一个button双击添加代码:000000000000000

    2022年8月15日
    9
  • php stristr_str.center()方法的功能是什么

    php stristr_str.center()方法的功能是什么欢迎进入Linux社区论坛,与200万技术人员互动交流>>进入php中strstr函数的用法:strstr()函数搜索一个字符串在另一个字符串中的第一次出现的字符串。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回false.语法strstr(欢迎进入Linux社区论坛,与200万技术人员互动交流>>进入php中strstr函数的…

    2022年9月13日
    4
  • 情商的研究

    情商EQ认识与提高情商(情绪、意志、性格、行为习惯组成的商数)情商(EmotionalQuotient)通常是指情绪商数,简称EQ,主要是指人在情绪、意志、耐受挫折等方面的品质,其包括导商(LQ)等。总的来讲,人与人之间的情商并无明显的先天差别,更多与后天的培养息息相关。它是近年来心理学家们提出的与智商相对应的概念。从最简单的层次上下定义,提高情商是把不能控制情绪的部分变为可以…

    2022年4月9日
    35

发表回复

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

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