MP学习记录
- Mybatis和MybatisPlus依赖共存问题
当同时导入Mybatis和MybatisPlus的依赖时就会出现以下问题
问题原因:在使用MybatisPlus时不应引用MyBatis依赖,同时引用可能会导致重复的SqlSessionFactory等核心类冲突。
解决方法:mybatis-plus-boot-starter内置Matis核心依赖,所以只保留MybatisPlus的依赖即可。
- 未知列名异常
问题原因:在对数据库进行增删改查时,MP默认会将对应实体类所有字段作为数据库表的列名的查询字段,而有时实体类的字段是为了存储其他表数据,因此会查询不到这些字段。
解决方法:对实体类中不是本表的字段加上@TableField(exist = false)注解。
- 新增数据时出现id值超出范围的异常
问题原因:使用MP时,如果没有在实体类的id指定type,会默认使用雪花算法生成id,在生成十进制id的情况下,id的长度为18-19位,如果数据库表的id范围较小,就会出现该错误。
解决方法:在实体类上添加@TableId注解,并指定type类型位AUTO,令id自增长。
如果打算使用雪花算法生成id,可以修改数据库表的id字段长度限制。
- 时间无法转换错误
问题原因:错误表明 JSON 反序列化失败,因为字符串 "2025-02-01 16:35:33" 无法直接转换为 LocalDateTime 类型。
根本原因是日期时间格式不匹配:
- 默认要求格式:LocalDateTime的JSON反序列化默认需要ISO-8601格式(如 2025-02-01T16:35:33),其中日期和时间之间用T分隔。
- 实际传递格式:2025-02-01 16:35:33(日期和时间用空格分隔),所以导致解析失败。
解决方法:在实体类对应的时间字段上添加@JsonFormat注解,并指定格式为与传递的时间相对应的格式“yyyy-MM-dd HH:mm:ss”。
- 分页查询分页参数无效
问题原因:在使用MP的分页功能时需要对分页插件进行注册。
解决方法:定义配置类,注册分页插件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)