原创/朱季谦 某天检查一位离职同事写的代码,发现其对应表虽然设置了AUTO_INCREMENT自增,但页面新增功能生成的数据主键id很诡异,长度达到了19位,且不是从1开始递增的-- 我检查了一下,发现该表目前自增主键已经变成从1468844351843872770开始递增了-- 这就很奇怪了,目前该表数据量很少,且主键是设置AUTO_INCREMENT,正常而言,应该自增id仍在1000范围内,但目前已经变成一串长数字. 底层ORM框架用的是Mybatis-Plus,我寻思了一下,这看起来像是…
主键策略: 1.自动增长 有一点小缺陷:例如当一张表里的数据过于庞大时我们会进行分表操作,若是用自动增长策略,那么除了第一张表外的每一张表都必须知道上一张的表的的最后ID值.这个操作便会造成效率的变低. 2.UUID 每次生成随机的唯一ID 但是其中包含字符,无法进行排序 3.Redis生成ID 利用他的原子操作,每次加5 4.mybatis plus自带的snowflake算法 也叫雪花算法 生成19位唯一的可排序的ID . mp自动增长: 1.实体类相关属性上添加注解@TableField(…
使用mybatis的自动生成工具生成的主键id: <selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER" > SELECT LAST_INSERT_ID()</selectKey> 使用sharding-jdbc时候 一直提示 分片报错, 可以使用这种方式解决: <insert id="insertSelective&…
mysql的方式: 方式一: useGeneratedKeys="true" keyProperty="id" 方式二: <selectKey keyProperty="studentID" resultType="String" order="AFTER"> SELECT LAST_INSERT_ID() as id </selectKey> Oracle的方式: <sele…
// useGeneratedKeys默认值为false,keyProperty的值对应的是User类中的主键字段名 // mybatis 写法如下 <insert id="insert" parameterType="com.nf.lc.entity.User" useGeneratedKeys="true" keyProperty="user_id"> insert into users(name, passw…
最近学习Spring boot JPA 学习过程解决的一些问题写成随笔,大家一起成长.这次遇到自定义主键的问题 package javax.persistence; public enum GenerationType { TABLE, SEQUENCE, IDENTITY, AUTO; private GenerationType() { } } GenerationType源码 从源码中可以看出JPA提供的四种标准主键策略TABLE,SEQUENCE,IDENTITY,AUTO TABLE:…
MyBatis Generator 简介 MyBatis Generator 连接数据库表并生成MyBatis或iBatis文件.这有助于最大限度地减少使用MyBatis时为数据库文件创建简单CRUD操作所需的工作量. 参考文档:http://www.mybatis.org/generator/ 下载地址:https://github.com/mybatis/generator/releases MyBatis Generator 使用 本例环境已安装java环境,且数据库是mysql,表结构如…
mybatis新增对象时, 使用拦截器自动生成uuid方案有了它不再去xml中手动添加selectKey了, 生成id方案实现类自行实现, 实现IdGenerator接口便可, 主要代码由公司同事编写, 我进行改造 使用时可以在id字段上添加@Id注解, 也可以在getId方法上添加或者不添加, 但是主键名字必须是id, 类型必须是String @Target({ METHOD, FIELD }) @Retention(RUNTIME) public @interface Id { Class<…
刚学MyBatis逆向工程(还以为要反汇编呢.....) MyBatis逆向工程 个人理解就是链接数据库自动生成相关的增删改查相关的类 以及xml文件 (其中有一些不足 应该就是多表链接的问题需要自己写吧) MyBatis逆向工程 一般和主项目分开 比较清楚 另外 在配置文件中的包名希望和你工程文件包名都保持一致(要不需要手动改) 本项目来源 黑马商城资源 我的是mysql 项目地址 https://www.lanzous.com/i3eb3sj generatorConfig.xml <?xm…
前言 项目使用SSM框架搭建Web后台服务,前台后使用restful api,后台使用MyBatisGenerator自动生成代码,在前台使用关键字进行查询时,遇到了一些很宝贵的坑,现记录如下.为展示所遇问题,将项目进行了精简. 项目框架 后台框架 后台框架选型为Spring + SpringMVC + Mybatis + Jetty,其中使用MyBatisGenerator创建代码,Jetty为内嵌的Web服务器. 项目代码 代码已上传至github 项目介绍 数据准备 创建库ssm和表use…