当前位置: 首页 > 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.cnnetsun.cn/news/484506.html

相关文章:

  • 2026年入局AI行业:普通人的机会在哪里?
  • 玫瑰克隆AI工具:深耕小红书生态的爆款创作赋能利器
  • GESP Python 编程一级教材之 10 掌握变量的创建及使用(教程含历年试题解析)
  • An Incremental Learning-Based Mechanism to Deploying Radio Map Estimation Models
  • 中商旅游一卡通——打造国内惠民旅游领先平台
  • ArcGIS大师之路500技---054字段顺序调整
  • vue基于springboot框架的在线求医问诊问药系统小程序_0gus2y33
  • Linux命令-iotop命令(实时磁盘 I/O 监控工具)
  • 蓝桥杯 Java 编程题提交前自查清单
  • 基于SVM的人民币面值识别系统的Matlab GUI实现
  • ESP8266 温湿度监测系统教程(SHT30+MAX7219+LeanCloud+HTTP 服务)
  • 2026双重突破:世界模型构建×具身智能实践
  • 从数据手册到驱动程序:全志R528寄存器操作实战指南
  • 用S7 - 300 PLC和组态王搭建宾馆热供水电气控制系统
  • 大模型智能客服系统开发:强需求vs弱需求场景实战解析!大模型应用实战与避坑指南!
  • 大模型训练全流程解析:基于Olmo-Thinking的开源实践指南!
  • 2025.8大众点评(武汉)全品类数据
  • 20亿并购背后的AI Agent核心密码:LangChain与Manus联合揭秘上下文工程三大策略
  • 学术 PPT “秒变” 神器!虎贲等考 AI 让汇报质感直逼专业级
  • AI 写论文哪个软件最好?深度实测后,虎贲等考 AI 凭 “真材实料 + 全链赋能” 登顶
  • AutoGen【部署 01】Windows环境安装部署AutoGen、AutoGenStudio和LiteLLM流程说明
  • 汽车制造数字大脑:驱动未来智能制造的核心引擎
  • 新能源电动汽车整车控制器VCU原理图与PCB图详解:控制策略及程序实现探讨
  • springboot基于vue的新疆旅游平台的 可视化大屏4t007914
  • 虎贲等考 AI:AI 驱动学术创作,全流程智能辅助新范式
  • MongoDB 远程连不上?用cpolar告别局域网束缚,跨网访问就这么简单
  • CPU密集型任务与I/O密集型任务详解
  • 副业封神!挖 SRC 漏洞一个就赚 2W+,网安人轻松躺赚,平均日收入看完馋哭了!
  • 进程的创建——如何理解fork()系统调用
  • 学长亲荐!9款AI论文软件测评:研究生开题报告必备工具