Mybatis-Plus Bugs
Mybatis-Plus Bugs
实体类中属性和数据库字段对应异常
Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'user_id' in 'field list'
原因:
实体类中有该字段并且有值,但是数据库不存在该字段。
INSERT INTO user ( user_id, name ) VALUES ( ?, ? )
方案:
1.字段声明为静态字段 private static Long userId;
2.字段用transient修饰 private transient Long userId;
3.@TableField注解的exist=false
@TableField(exist = false)
private Long userId;
### SQL: INSERT INTO user ( name ) VALUES ( ? )
### Cause: java.sql.SQLException: Field 'id' doesn't have a default value
Field 'id' doesn't have a default value; nested exception is java.sql.SQLException: Field 'id' doesn't have a default value
原因:
mybatis-plus 如果实体的字段为null,则不会出现在插入sql语句中,反之则会出现。
新增记录主键生成异常
org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.mozq.boot.sbmp01.pojo.Car' with value '1185494840728498178' Cause: java.lang.IllegalArgumentException: argument type mismatch
原因:
mybatis-plus 默认的主键生成策略不是数据库自增。而是IDWorker,生成Long值,并设置到实体中,主键有值了,则会出现在插入sql语句中,插入到数据库。
sql语句:
INSERT INTO car ( id, company_id, car_license, brand, status ) VALUES ( ?, ?, ?, ?, ? )
方案:
public class Car implements Serializable {
@TableId(type = IdType.AUTO)//在主键上使用@TableId和type属性,指定主键生成策略为数据库自增。
private Integer id;
}
参考:
https://blog.csdn.net/u010514052/article/details/81775595 青花葬水
com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column 'id' at row 1
原因:
实体主键为默认的IDWorker生成Long,而数据库字段的类型为int,超出范围。
Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
原因:
没有在yml配置文件中配置数据源。
日志工厂不存在
Caused by: java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory
原因:
mybatis-plus和mybatis包不能同时引入。
当使用mybais-plus时,要将所有直接或间接引入的mybatis依赖排除掉。常见的有mybatis,pagehelper,还有其他使用mybatis的包。
<dependency>
<groupId>com.ytkj</groupId>
<artifactId>wechat_start_server</artifactId>
<version>1.0.4</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
Cause: java.sql.SQLSyntaxErrorException: Unknown column 'sys_role_list' in 'field list'
原因:SysUser额外的角色列表在数据库中没有对应。
@Data
public class SysUser implements Serializable {
/**
* 角色列表
*/
@TableField(exist = false)
List<SysRole> sysRoleList;
}
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 10
原因: selectOne()方法只能查询1个结果或0个,查询多个结果跑出异常。
SysUser sysUser = sysUserDao.selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getCompanyId, 1));
Mybatis-Plus Bugs的更多相关文章
- Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)一
MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中. 使用这个类库中的类, Spring 将会加载必要的MyBatis工厂类和 session 类. 这个类库 ...
- mybatis/callablestatement调用存储过程mysql connector产生不必要的元数据查询
INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProce ...
- MyBatis 入门到精通(三) 高级结果映射
MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式或BCNF(修正的第三范式),但它们不是.如果有一个数据库能够完美映射到所有应用程序,也将是非常 ...
- mysql jdbc性能优化之mybatis/callablestatement调用存储过程mysql jdbc产生不必要的元数据查询(已解决,cpu负载减少20%)
INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProce ...
- 转:mybatis 高级结果映射(http://blog.csdn.net/ilovejava_2010/article/details/8180521)
高级结果映射 MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式或BCNF(修正的第三范式),但它们不是.如果有一个数据库能够完美映射到所有应用程 ...
- MyBatis 使用 foreach 批量插入
MyBatis 使用 foreach 批量插入 参考博文 老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入 使用MyBatis一次性插入多条数据时候可以使用 <for ...
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- [原创]mybatis中整合ehcache缓存框架的使用
mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...
随机推荐
- linux-部署2
gunicorn+supervisor 1.gunicorn 安装: pip3 install gunicorn 配置: 两种方式:命令和文件,因为配置项比较多,所以放在文件里,启动时指明配置文件即可 ...
- Paper | MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
目录 1. 故事 2. MobileNet 2.1 深度可分离卷积 2.2 网络结构 2.3 引入两个超参数 3. 实验 本文提出了一种轻量级结构MobileNets.其基础是深度可分离卷积操作. M ...
- Shell基本运算符之文件测试符
文件测试运算符 ================摘自菜鸟教程================= 文件测试运算符用于检测UNIx文件的各种属性: 操作符 说明 例子 -b 检测文件是否是块设备文件,如果 ...
- win10每次开机都会自检系统盘(非硬件故障)——解决方案2019.07.12
1.最近反复遇到了这个问题,之前遇到这个问题就把系统重装了,没想到今天又遇到了,目前系统东西太多了,重装太麻烦了,就下决心解决一下. 2.不要使用网络上流传的修改注册表的方案,把注册表的那个键值删除那 ...
- sql server中的临时表、表变量和公用表表达式
在编写T-SQL语句的时候,SQL Server提供了三种方法临时存储某些结果集,分别是临时表.表变量和公用表表达式. 临时表 临时表需要在临时数据库TempDB中通过I/O操作来创建表结构,一旦用户 ...
- 【洛谷5439】【XR-2】永恒(树链剖分,线段树)
[洛谷5439][XR-2]永恒(树链剖分,线段树) 题面 洛谷 题解 首先两个点的\(LCP\)就是\(Trie\)树上的\(LCA\)的深度. 考虑一对点的贡献,如果这两个点不具有祖先关系,那么这 ...
- 北京麒麟会GITC
分享ppt:https://pan.baidu.com/s/1Aerqtbi8VpMiFGhfEMUtPQ http://bj.thegitc.com/#meeting-agenda
- vue入门案例
1.技术在迭代,有时候你为了生活没有办法,必须掌握一些新的技术,可能你不会或者没有时间造轮子,那么就先把利用轮子吧. <!DOCTYPE html> <html> <he ...
- 调用SqlCommand或SqlDataAdapter的Dispose方法,是否会关闭绑定的SqlConnection?(转载)
1. Does SqlCommand.Dispose close the connection? 问 Can I use this approach efficiently? using(SqlCom ...
- c# "As" 与 "Is"效率 (原发布csdn 2017-10-07 11:49:18)
十一长假就要过去了,今年假期没有回家,一个人闲着无聊就在看C#语言规范5.0中文版.昨天看了 is运算符和 as运算符,平时项目中也有用到这两种符号,对于其效率也没有进行比较过,趁着假期有空,先看下效 ...