当前位置: 首页 > news >正文

MybatisPlus-快速入门

介绍

官网介绍:简介 | MyBatis-Plus

作用:提高单表CRUD操作的效率

快速开始

实现下列功能:

  1. 新增用户功能
  2. 根据id查询用户
  3. 根据id批量查询用户
  4. 根据id更新用户
  5. 根据id删除用户

引入MybatisPlus的起步依赖

MyBatisPlus官方提供了starter,其中集成了Mybatis和MybatisPlus的所有功能,并且实现了自动装配效果。
因此我们可以用MybatisPlus的starter代替Mybatis的starter,也就是说,引入了下面这个依赖后就可以同时使用Mybatis和MybatisPlus:

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency>

定义Mapper

自定义的Mapper继承MybatisPlus提供的BaseMapper接口:

public interface UserMapper extends BaseMapper<User> { }

这个Mapper里什么都不用写,User是自定义的实体类,对应user表

演示(基于单元测试)

@SpringBootTest class UserMapperTest { @Autowired private UserMapper userMapper; @Test void testInsert() { User user = new User(); user.setId(5L); user.setUsername("Lucy"); user.setPassword("123"); user.setPhone("18688990011"); user.setBalance(200); user.setInfo("{\"age\": 24, \"intro\": \"英文老师\", \"gender\": \"female\"}"); user.setCreateTime(LocalDateTime.now()); user.setUpdateTime(LocalDateTime.now()); userMapper.insert(user); } @Test void testSelectById() { User user = userMapper.selectById(5L); System.out.println("user = " + user); } @Test void testQueryByIds() { List<User> users = userMapper.selectBatchIds(List.of(1L, 2L, 3L, 4L)); users.forEach(System.out::println); } @Test void testUpdateById() { User user = new User(); user.setId(5L); user.setBalance(20000); userMapper.updateById(user); } @Test void testDeleteUser() { userMapper.deleteById(5L); } }

新增用户功能:userMapper.insert(user);

根据id查询用户:userMapper.selectById(5L);

根据id批量查询用户:userMapper.selectBatchIds(List.of(1L, 2L, 3L, 4L));

根据id更新用户:userMapper.updateById(user);

根据id删除用户:userMapper.deleteById(5L);

解释

mp如何找到数据库中对应的表以及表内字段的?——3个约定

1.类名驼峰转下划线作为表名

例:类名User->表名user;类名UserInfo->表名user_info

2.名为id的字段作为主键

3.变量名驼峰转下划线作为表的字段名

例:类内变量名username->表内字段名username;类内变量名createTime->表内字段名create_time

常用注解

如果实体类和对应的表不满足3个约定,则需要用到注解来进行配置

MybatisPlus中比较常用的几个注解如下:

  • @TableName:用来指定表名
  • @Tableld:用来指定表中的主键字段信息
  • @TableField:用来指定表中的普通字段信息

@TableName

当实体类的类名和表名不满足约定时,在实体类上添加@TableName("表名")

@TableId

当实体类中主键对应的变量名不为id时,在该变量名上添加@TableId(value = "id")

@TableId还有3种type属性:

IdType枚举:

  • AUTO:数据库自增长
  • INPUT:通过set方法自行输入
  • ASSIGN_ID(默认):分配 ID,接口ldentifierGenerator的方法nextld来生成id,默认实现类为DefaultldentifierGenerator雪花算法

@TableField

使用@TableField的常见场景:

  • 成员变量名与数据库字段名不一致:@TableField("数据库字段名")
  • 成员变量名以is开头,且是布尔值:@TableField("数据库字段名")
  • 成员变量名与数据库关键字冲突(转义):@TableField("`数据库字段名`")
  • 成员变量不是数据库字段:@TableField(exist = false)

常用配置

官网:配置 | MyBatis-Plus

大部分并不需要我们去配置,走默认就行,如果需要配置,可以查看官网或者通过idea的提示进行配置

http://www.jsqmd.com/news/211710/

相关文章:

  • 高德扫街榜100天全新升级:从美食到吃喝玩乐,全球首次实现飞行实景探店
  • 论文67分神话创造者:7000篇论文实战淬炼,金老师带你锁定2026年高项通关“生死关”
  • 2026年入局AI行业:普通人的机会在哪里?
  • 操作系统期末复习——第5章:输入/输出
  • Claude Code 国内使用2026年最新完整教程分享
  • Mosaic:面向超长序列的多GPU注意力分片方案
  • 操作系统期末复习——第4章:文件系统
  • 2026马斯克《Moonshots》播客独家访谈全记录与深度解析
  • GESP Python 编程一级教材之 10 掌握变量的创建及使用(教程含历年试题解析)
  • 微信小程序 PHP_uniapp的社区团购系统_1g4y216z
  • GESP Python 编程一级教材之 11 掌握输入输出语句 input 和 print(教程含历年试题解析)
  • 6.1 Elasticsearch-Lucene 索引文件结构:tim、tip、doc、pos、pay
  • GESP Python 编程一级教材之 12 神奇的画笔turtle绘图,掌握图形库 turtle 的主要功能,使用 turtle 进行绘图(教程含历年试题解析)
  • 微信小程序 PHP_uniapp的社区老人服务管理系统_lz9wo71q
  • GESP Python 编程一级教材之 13 掌握模块的导入方法(教程含历年试题解析)
  • 玫瑰克隆AI工具:深耕小红书生态的爆款创作赋能利器
  • 论文复现:PMSM速度伺服系统的强化学习与最优控制
  • 爆火!9款AI论文工具实测,PaperNex维普一把过!
  • 多智能体实战指南:9种模式打造高效AI应用
  • 微信小程序 PHP_uniapp的音乐播放器排行榜系统的设计与实现_5h11g380
  • 收藏必备!国产最强大模型GLM-4-Plus评测:打破国外垄断,三大场景解决程序员痛点!
  • 收藏!80%的人正在浪费大模型革命!这份产品经理转型指南请务必收藏
  • 微信小程序 PHP_uniapp校园外卖跑腿骑手在线接单系统 _f8zv38dg
  • 【Agent实战】Anthropic Skills、MCP与LangGraph的工程实践
  • 从零到 AI 产品经理:3 个必备技能缩短你的转型路径
  • 传统PM转型大模型产品:避开90%人踩过的认知误区“ 解析
  • 中商旅游一卡通——打造国内惠民旅游领先平台
  • iClient3D for WebGL ViewCube控件
  • PyQt5(十一)如何打包成exe
  • OddAgent:一个通用的意图、指令识别框架