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.mzph.cn/news/1125147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高德扫街榜100天全新升级:从美食到吃喝玩乐,全球首次实现飞行实景探店

1月7日&#xff0c;上线100天的高德扫街榜宣布三大重磅升级&#xff1a;依托世界模型发布全球首个“飞行街景”&#xff0c;实现从街景一路俯瞰至店内实景&#xff1b;推出全球首个应季、应时、应地的生活服务动态榜单&#xff1b;引入好友关系&#xff0c;新增好友动态和个人榜…

论文67分神话创造者:7000篇论文实战淬炼,金老师带你锁定2026年高项通关“生死关”

如果说软考高项是一场战役&#xff0c;那么论文就是决定最终胜负的“天王山之战”无数考生折戟于此——背熟了知识&#xff0c;练会了计算&#xff0c;却倒在了最后这3000字的“纸面上”。然而&#xff0c;有这样一位老师&#xff0c;他让论文从“拦路虎”变成了学员的“提分利…

2026年入局AI行业:普通人的机会在哪里?

作为一个在AI领域摸爬滚打一年多的年轻人&#xff0c;我亲身体验了普通人如何通过AI实现经济独立。在我还未毕业的情况下&#xff0c;通过自学AI技术和应用&#xff0c;已经实现了完全的经济自由。今天&#xff0c;我想分享我的观察和思考&#xff0c;希望能为同样想抓住AI浪潮…

操作系统期末复习——第5章:输入/输出

目录5.2 I/O软件原理5.2.1 I/O软件的目标5.2.2 程序控制I/O5.2.3 中断驱动I/O5.2.4 使用DMA的I/O5.3 ⭐I/O软件层次5.3.1 中断处理程序5.3.2 ⭐设备驱动程序&#xff08;Device Driver&#xff09;5.3.3 ⭐Device-Independent的OS软件5.3.4 功能5.3.5 总结5.4 Disks5.4.1 盘硬件…

Claude Code 国内使用2026年最新完整教程分享

适用 Windows / macOS / Linux&#xff0c;并包含 国内网络环境可用方案与常见问题排查。Claude Code 是 Anthropic 官方的终端 AI 编程助手&#xff0c;可用于&#xff1a;写代码、解释代码、重构、生成脚本、审查 PR、运行测试、维护项目记忆&#xff08;CLAUDE.md&#xff0…

Mosaic:面向超长序列的多GPU注意力分片方案

Transformer的"二次方注意力瓶颈"的问题是老生常谈了。这个瓶颈到底卡在哪实际工程里怎么绕过去&#xff1f;本文从一个具体问题出发&#xff0c;介绍Mosaic这套多轴注意力分片方案的设计思路。 注意力的内存困境 注意力机制的计算公式&#xff1a; Attention(Q, …

2026马斯克《Moonshots》播客独家访谈全记录与深度解析

一、访谈基础信息全景 本次访谈是马斯克2026年首份重磅公开对话,录制于2025年12月22日美国得克萨斯州奥斯汀特斯拉超级工厂(Cybertruck与Optimus机器人核心生产基地),于2026年1月6日通过《Moonshots》播客正式上线,全时长近3小时。访谈由“零重力”公司创始人、奇点大学执…

操作系统期末复习——第4章:文件系统

目录第4章&#xff1a;文件系统概述4.1 文件4.1.1 文件命名4.1.2 文件结构4.1.3 文件类型4.1.4 文件访问4.2 目录4.2.1 一级目录系统4.2.2 二级目录系统4.2.3 层次目录系统4.2.4 路径名4.3文件系统的实现4.3.1 文件系统布局4.3.2 文件与磁盘4.3.3 ⭐文件的实现4.3.4 ⭐目录的实…

GESP Python 编程一级教材之 10 掌握变量的创建及使用(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

微信小程序 PHP_uniapp的社区团购系统_1g4y216z

微信小程序社区团购系统概述 该系统基于PHP和UniApp技术栈开发&#xff0c;整合微信小程序前端与PHP后端&#xff0c;实现社区团购的完整业务流程。前端采用UniApp跨平台框架&#xff0c;兼容多端运行&#xff1b;后端使用PHP构建高效的数据接口&#xff0c;支持商品管理、订单…

GESP Python 编程一级教材之 11 掌握输入输出语句 input 和 print(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

6.1 Elasticsearch-Lucene 索引文件结构:tim、tip、doc、pos、pay

6.1 Elasticsearch-Lucene 索引文件结构&#xff1a;tim、tip、doc、pos、pay Elasticsearch 的搜索性能之所以能在 PB 级别数据量下仍保持毫秒级响应&#xff0c;核心依赖是 Lucene 的倒排索引文件格式。一个分片&#xff08;shard&#xff09;本质上就是 Lucene 的一个索引目…

GESP Python 编程一级教材之 12 神奇的画笔turtle绘图,掌握图形库 turtle 的主要功能,使用 turtle 进行绘图(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

微信小程序 PHP_uniapp的社区老人服务管理系统_lz9wo71q

微信小程序 PHP_uniapp 社区老人服务管理系统摘要 该系统基于微信小程序和 PHP_uniapp 技术栈开发&#xff0c;旨在为社区老年人提供便捷的线上服务管理平台。通过整合社区资源&#xff0c;实现服务需求对接、健康监测、活动组织等功能&#xff0c;提升老年人生活质量。 技术架…

GESP Python 编程一级教材之 13 掌握模块的导入方法(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

玫瑰克隆AI工具:深耕小红书生态的爆款创作赋能利器

玫瑰克隆AI工具的核心定位&#xff0c;是专为小红书内容生态打造的“爆款逻辑拆解原创内容赋能”AI辅助创作系统。它区别于泛用型AI文案工具&#xff0c;深耕小红书平台规则、用户偏好与流量机制&#xff0c;以技术驱动破解创作者的核心痛点&#xff0c;助力不同层级创作者从“…

论文复现:PMSM速度伺服系统的强化学习与最优控制

论文复现:PMSM速度伺服系统的强化学习与最优控制 以下是基于论文提出的控制策略的复现代码,包括模型建立、控制器设计、强化学习算法实现以及仿真验证。代码将分为以下几个部分: 系统建模与参数定义 快速电流环PI控制器 模型降阶与慢速子系统 最优速度环设计与LQR问题 强化…

爆火!9款AI论文工具实测,PaperNex维普一把过!

深夜&#xff0c;你的论文进度条还卡在10%&#xff1f;导师的夺命连环催即将到来&#xff0c;知网维普的查重高墙横亘在前。别慌&#xff0c;这篇2024年最新的“急救指南”&#xff0c;将为你揭秘9款实测有效的AI论文神器&#xff0c;特别是能让你在最后关头“一把过”的王牌工…

多智能体实战指南:9种模式打造高效AI应用

想要构建一个智能体应用&#xff0c;最重要的是什么&#xff1f;可能很多人首先会想到要选择一个性能强大的大模型。 这个回答没错&#xff0c;毕竟当前的LLM Based Agent哪能缺少LLM的支撑。但事实却是&#xff0c;很多基于先进大模型构建的智能体没能体现出应用效果&#xff…

微信小程序 PHP_uniapp的音乐播放器排行榜系统的设计与实现_5h11g380

微信小程序音乐播放器排行榜系统设计与实现 该系统基于微信小程序平台&#xff0c;采用PHP后端与Uniapp前端框架开发&#xff0c;实现了一个功能完善的音乐播放器排行榜系统。系统设计分为前端展示、后端数据处理和数据库管理三大模块。 前端采用Uniapp跨平台框架开发&#xff…