Mybatis Plus使用@TableId之坑及解决
目录
- Mybatis Plus使用@TableId之坑
- 1. TableId 可选类型
- 2. @TableId(value = “id”,type= IdType.AUTO)
- 3. @TableId(value = “id”,type= IdType.ID_WORKER)
- Mybatis Plus TableId无效
Mybatis Plus使用@TableId之坑
1. TableId 可选类型
不添加注解时,默认使用ID_WORKER(3)
public enum IdType { /** * 数据库ID自增 */ AUTO(0), /** * 该类型为未设置主键类型(将跟随全局) */ NONE(1), /** * 用户输入ID * <p>该类型可以通过自己注册自动填充插件进行填充</p> */ INPUT(2), /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */ /** * 全局唯一ID (idWorker) */ ID_WORKER(3), /** * 全局唯一ID (UUID) */ UUID(4), /** * 字符串全局唯一ID (idWorker 的字符串表示) */ ID_WORKER_STR(5); }
2. @TableId(value = “id”,type= IdType.AUTO)
使用条件:
- id 类型可以是Interger/Long;
- 数据库主键id,mysql必须设置自增主键,postgreSQL必须设置自增序列,才能够使用此注解。
3. @TableId(value = “id”,type= IdType.ID_WORKER)
使用条件:
- id 类型必须是Long;
- 因为ID_WORKER 生成的snowflakeId 是19位的全局id。
Mybatis Plus TableId无效
初次使用mybatisplus,刚开始正常,后来发现插入时总是duplicate key,百事不得其解,后发现问题如下
@TableId(type = IdType.ID_WORKER) private Long id; # 正确 private long id; # 错误 private int id; # 错误
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
记录一次脑瘫操作。。。。
相关推荐
-
mybatis-plus id主键生成的坑
简要说明 由于mybatis-plus会自动插入一个id到实体对象, 不管你封装与否, 所以有时候导致一些意外的情况发生 默认是生成一个长数字字符串(编码不同可能结尾带有字母) 错误 ested exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.xxx' with value '1110423703487479810' Cause: ja
-
MybatisPlus中@TableField注解的使用详解
实现 官方文档说明: com.baomidou.mybatisplus.annotations.TableField TableField注解新增属性 update 预处理 set 字段自定义注入 (讲解:比如我们使用mybatisplus自带的insert()方法向数据库插入数据时,假设我们给age字段赋值为1,但是我们在age字段上的@TableField注解里面加了update="%s+1",那么真真插入到数据库的值就是age=2,而不是age+1了) 例如: @TableFie
-
使用mybatis-plus的insert方法遇到的问题及解决方法(添加时id值不存在异常)
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm.虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活.但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦. 下面给大家介绍使用mybatis-plus的insert方法遇到的问题,具体内容如下所示: 我在添加的时候,无缘无辜的给我报 java.sql.SQLException: Field 'id' doesn't have a default value 如图: 后来了解到 使用 mybati
-
Mybatis-plus使用注解 @TableField(exist = false)
当表中午字段,但是实体类中需要这个成员变量时怎么办,可以使用mybatis-plus中@TableField(exist=false) 如下: import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomi
-
Mybatis Plus使用@TableId之坑及解决
目录 Mybatis Plus使用@TableId之坑 1. TableId 可选类型 2. @TableId(value = "id",type= IdType.AUTO) 3. @TableId(value = "id",type= IdType.ID_WORKER) Mybatis Plus TableId无效 Mybatis Plus使用@TableId之坑 1. TableId 可选类型 不添加注解时,默认使用ID_WORKER(3) public enu
-
一次mybatis连接查询遇到的坑实战记录
前言 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.本文主要介绍的是mybatis连接查询遇到的一个坑以及解决方法,下面话不多说了,来一起看看详细的介绍吧 1.遇到的问题: 通过角色ID获取role_menu表中对应的菜单id,再通过菜单id获取菜单项的权限编码 , 使用mybatis连接查询,代码如下 // SysRoleMapper // 通过菜单id连接查询对应的权限编码 @Select("select menu_id from sys_role_me
-
浅谈MyBatis原生批量插入的坑与解决方案
目录 原生批量插入的"坑" 解决方案 分片 Demo 实战 原生批量插入分片实现 总结 前面的文章咱们讲了 MyBatis 批量插入的 3 种方法:循环单次插入.MyBatis Plus 批量插入.MyBatis 原生批量插入,详情请点击<MyBatis 批量插入数据的 3 种方法!> 但之前的文章也有不完美之处,原因在于:使用 「循环单次插入」的性能太低,使用「MyBatis Plus 批量插入」性能还行,但要额外的引入 MyBatis Plus 框架,使用「MyBati
-
使用shardingsphere对SQLServer坑的解决
背景:最近一个使用SQLServer的项目,业务量太大,开始对业务有影响了,因此用户要求升级改造,技术上采用shardingsphere进行分库分表. 经过一系列调研,设计...哐哐一顿操作之后开始动刀改造.pom依赖如下: <!--sharding--> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-
-
mybatis-plus 关于savebatch,saveorupdatebatch遇到的坑及解决办法
目录 一.背景 二.解决办法 三.sql注入器实现批量更新,批量新增或更新功能 一.背景 最近mybatis-plus框架的更新,让我们基础开发中如虎添翼.其中基本的增删改查,代码生成器想必大家用着那叫一个爽.本人在使用中,也遇到一些坑.比如savebatch,saveorupdatebatch,看着这不是批量新增,批量新增或更新嘛,看着api进行开发,感觉也太好用啦.开发完一测试,速度跟蜗牛一样,针对大数据量真是无法忍受.在控制台上发现,怎么名义上是批量插入,还是一条一条的进行插入,难怪速度龟
-
Android 弹出软键盘所遇到的坑及解决方法
demo下载 重要代码: //1.此layout作为最外层的layout: //2.设置需要调整的view: setAdjustView(View view); //3.如果需要控制输入框的显示与隐藏,可以实现OnInputViewVisibleListener接口: public class SoftInputAdjustLayout extends RelativeLayout { private static final String TAG = SoftInputAdjustLayout
-
MySQL5.7中的sql_mode默认值带来的坑及解决方法
在正常项目开发过程中,如果MySQL版本从5.6升级到5.7版本.作为DBA在考虑数据库版本升级带来的影响时,一般会有几个注意点: sql_mode optimizer_switch 本文主要内容是MySQL升级到5.7版本之后,由于默认的 sql_mode 值带来的坑以及对应的解决方案. 案例一:ONLY_FULL_GROUP_BY 问题描述 MySQL版本从5.6升级至5.7之后,部分SQL执行报错,报错信息如下: ERROR 1055 (42000): Expression #3 of X
-
浅谈vue引入css,less遇到的坑和解决方法
在使用vux开发手机页面时,引入vux的公共样式less一直报错,通过各种百度,Google都没有解决,走了很多弯路.最后才发现钻牛角尖了,可以换一种方法引入. 1.报错的使用:在App中 @ ./~/css-loader?{"minimize":false,"sourceMap":false}!./~/vux/src/styles/reset. less 3:10-115 @ ./~/css-loader?{"minimize":false,&
-
基于IOS端微信分享失效的踩坑及解决方法
最近的一个公众号是基于vue的spa应用,在接入微信分享和微信语音的时候出现了:在Android上一切正常,但是在ios端调用wx.config的时候总是失败,去翻了官方文档也并没有找到解决方案,最后在测试中发现是因为初始化的时候传入的URL的问题.具体过程如下: 微信config接口配置,官方文档如下: 所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支
-
ant-design-vue按需加载的坑的解决
问题 在vue-cli4.x中按需加载ant-design-vue,在编译时报错,错误如下 原因 ant-design-vue使用less预处理器.在less3.0版本以前,javascriptEnabled属性默认为true,3.0以后默认为false.地址 目前项目中less版本为3.0.4,所以在编译中会报错 解决办法 第一种办法,在vue.config.js中添加如下配置 css: { loaderOptions: { less: { javascriptEnabled: true }
随机推荐
- Angular.js组件之input mask对input输入进行格式化详解
- ios开发:一个音乐播放器的设计与实现案例
- 浅谈Python中chr、unichr、ord字符函数之间的对比
- Angular2使用Augury来调试Angular2程序
- 基于Vue实现图书管理功能
- javascript点击按钮实现隐藏显示切换效果
- 正则表达式不区分大小写以及解决思路的探索 .
- bat文件加密 bat解密脚本(让bat乱码现形)
- Repeater控件实现编辑、更新、删除等操作示例代码
- php函数mkdir实现递归创建层级目录
- PHP引用(&)各种使用方法实例详解
- C++中函数模板的用法详细解析
- Android中bindService基本使用方法概述
- Node.js connect ECONNREFUSED错误解决办法
- jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
- PowerShell创建Byte数组例子
- jQuery基于Ajax方式提交表单功能示例
- JS与Ajax Get和Post在使用上的区别实例详解
- Linux下root初始密码设置方法
- js 蒙版进度条(结合图片)