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


相关推荐

  • JAVA的extends使用方法

    JAVA的extends使用方法

    2021年12月9日
    50
  • 基于mips内核的Atheros芯片–wlan中的VAP的创建「建议收藏」

    基于mips内核的Atheros芯片–wlan中的VAP的创建「建议收藏」重要是使用命令创建,可以通过无线网卡和手机登陆的无线网络标识。登陆名称就是ssid号。1:/etc/rc.d/rc.wlanup//这个文件主要用来加载wlan相应的驱动程序。2:配置ip地址,针对br0。ifconfigbr010.10.99.194up  3:创建基本的VAP/etc/rc.d/rc.wlanupwlanconfigath0creat

    2025年6月9日
    0
  • clover 引导无法扫描 找到windows系统解决办法[通俗易懂]

    目的:为clover添加windows启动项环境:thinkpadX260+CLOVER引导+黑苹果方法: 进入winPE系统  cmd下cd切换到系统盘盘符如C:挂载efi分区为S盘执行bcdbootC:\Windows  /sS:/fuefi/lzh-cn重启即可看到…

    2022年4月8日
    160
  • outputstreamwriter.write_writevalueasstring

    outputstreamwriter.write_writevalueasstring一.输出流1.1字节输出流OutputStream在java中,字节是占1个字节,即8位字节输出流OutputStream-将指定的字节写入此输出流1.2字符流Writer在java中,字符是占2个Byte,即16位字符输出流Writer-将字符写入此输出流,字符流的操作比字节流操作好在一点,比如可以直接输出字符串1.3OutputStreamWri

    2022年9月11日
    0
  • singleTask和startActivityResult「建议收藏」

    singleTask和startActivityResult「建议收藏」在稍微复杂点的项目中都有过singleTask、singleInstance,避免打开同一个Activity返回的时候A返回以后还是A吧,对A在AndroidManifest里面设置android:launchMode=”singleTask”即可避免这个问题,但是发现用startActivityResult的时候A跳转到B,在B里面setResult以后在A里面拿到的resultcode不是自己

    2022年6月26日
    20
  • Vue router原理

    Vue router原理总结:vue-router是vue项目的重要组成部分,用于构建单页应用。单页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。路由的本质就是建立url和页面之间的映射关系router模式hash/historyhash模式是vue-router的默认模式。hash指的是url锚点,当锚点发生变化的时候,浏览器只会修改访问历史记录,不会访问服务器重新获取页面。因此可以监听描点值的变化,根据描点值渲染指定dom。hash监听方法:window.addEventListene

    2022年7月27日
    3

发表回复

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

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