MyBatis-plus(一):快速入门

目录

一、MyBatis-plus 快速入门

1、原理

2、实体类命名规则

3、常见注解

4、主键 id 策略

5、使用 @TableField 的常见场景

6、常用配置

二、核心功能

1、条件构造器

2、自定义 SQL

3、IService 接口


一、MyBatis-plus 快速入门

1、原理

  • MyBatisPlus 通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。
  • 主要作用是定义 DAO 层的数据库操作方法,例如数据的增删改查等。基本使用示例:
    public interface xxxMapper extends BaseMapper<xxx实体类>{}

2、实体类命名规则

  • 类名使用驼峰命名,转变下划线的方式,作为表名。
  • 变量名使用驼峰命名,转变下划线的方式,作为字段名。
  • 固定以字段名为 id 的字段作为主键。

3、常见注解

  • 可以通过注解的方式,映射实体类和数据表的关系。
  • @TableName:用于指定表名。
  • @Tableld:用于指定表中的主键字段信息。
  • @TableField:用于指定表中的普通字段信息。

4、主键 id 策略

  • 主键在 MyBatis-plus 中称为 IdType, 可以通过注解的方式,设置不同的 id 策略。
  • ldType 枚举:
    • AUTO:主键自增。示例:@TableId(value=id, type=IdType.AUTO)
    • INPUT:通过 set 方法自行输入
    • ASSIGN_ID:分配 id,通过接口 IdentifierGenerator 的方法 nextld 生成 id,默认实现类使用 DefaultldentifierGenerator 雪花算法。

5、使用 @TableField 的常见场景

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

6、常用配置

  • MyBatisPlus 的配置项继承了 MyBatis 原生配置,同时也拥有一些自己特有的配置。
mybatis-plus:type-aliases-package: com.xxx.xxx  #别名扫描包,配置默认包名。mapper-locations: "classpath*:/mapper/**/*.xml"configuration: map-underscore-to-camel-case: true  #是开启下划线和驼峰映射。cache-enabed: false  #是否开启二级缓存global-config: db-config: id-type: assign_id  #使用雪花算法生成 id。update-strategy: not_null  #更新策略:只更新非空字段.

二、核心功能

1、条件构造器

  • Querywrapper 和 LambdaQueryWrapper 通常用来构建 select、delete、update 的 where 条件部分。
  • Updatewrapper 和 LambdaUpdatewrapper 通常只有在 set 语句比较特殊才使用。
  • 尽量使用 LambdaQuerywrapper 和 LambdaUpdatewrapper 避免硬编码。

2、自定义 SQL

  • 可以利用 MyBatisPlus 的 Wrapper 构建复杂的 Where 条件,然后自己定义 SQL 语句中剩下的部分。
  • 基于 Wrapper 构建 where 条件。示例代码:
    List<Long> ids = List.of(1L,2L,3L);
    int amount = 200;LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>().in(User::getId,ids);userMapper.updateAmountByIds(wrapper, amount);
  • 在 mapper 方法参数中用 @Param 注解声明 wrapper 变量名称,必须是 Constants.WRAPPER 。示例代码:
    // UserMapper 接口中void updateAmountByIds(@Param(Constants.WRAPPER) QueryWrapper<User> wrapper, @Param("amount") int amount);

  • 自定义SQL, 并使用 Wrapper 条件。示例代码:
    <update id="updateAmountByIds">UPDATE 数据表名 SET amount = amount - #{amount} ${(Constants.WRAPPER).customSqlSegment}
    </update>

3、IService 接口

  • 使用 service 接口需要先构建以下继承体系:

  • 示例代码:
    // service 接口
    public interface IUserService extends IService<User> { }// service 实现类
    @Service
    public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { }

  • IService 提供批量处理操作(IService 和 BaseMapper 需一起使用),BaseMapper 则没有。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/10524.shtml

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

相关文章

算法学习012-不同路径 c++动态规划算法实现 中小学算法思维学习 信奥算法解析

目录 C不同路径 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、推荐资料 C不同路径 一、题目要求 1、编程实现 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09…

Golang | Leetcode Golang题解之第78题子集

题目&#xff1a; 题解&#xff1a; func subsets(nums []int) (ans [][]int) {set : []int{}var dfs func(int)dfs func(cur int) {if cur len(nums) {ans append(ans, append([]int(nil), set...))return}set append(set, nums[cur])dfs(cur 1)set set[:len(set)-1]df…

计算概论学习笔记(2)

感谢北大李戈老师讲解的计算概论。 【道阻且长&#xff0c;行则将至】 很多年没有intensive coding&#xff0c;现在这个系列是coding retake&#xff0c;一点点回忆之前的知识&#xff0c;希望能重回到一线。主要内容包括C,C,Pytorch学术前沿项目学习和实践&#xff0c;预计…

iOS 安装cocoapds

注意 CocoaPods安装是基于ruby环境的&#xff0c;所以要安装CocoaPods先要安装Ruby环境&#xff0c;国内不能直接安装&#xff0c;只能通过VPN或淘宝的Ruby镜像来访问。 安装过程 gem sources --remove https://rubygems.org/ ** (注意是两个“-”&#xff0c;否则会移除失败) …

掌握文件重命名技巧:一次性处理多路径文件并赋予独立编号

在日常工作和生活中&#xff0c;我们经常需要处理大量的文件&#xff0c;而文件重命名则是一项非常常见的任务。如何高效地一次性处理多路径文件并赋予独立编号&#xff0c;成为许多用户关注的焦点。本文将介绍云炫文件管理器一些实用的文件重命名技巧&#xff0c;帮助您轻松应…

前后端完全开源!功能丰富的在线教室项目:Agora Flat

Agora Flat&#xff1a;高效集成的在线教室解决方案&#xff0c;重塑互动学习新体验。- 精选真开源&#xff0c;释放新价值。 概览 Agora Flat是在GitHub平台上公开分享的一个全面开源项目&#xff0c;它精心设计为一个高性能的在线教室解决方案&#xff0c;旨在便捷地搭建支持…

锐捷EWEB网管系统RCE漏洞

文章目录 免责声明漏洞描述漏洞原理影响版本漏洞复现修复建议 免责声明 该文章只为学习和交流&#xff0c;请不要做违法乱纪的事情&#xff0c;如有与本人无关 漏洞描述 锐捷网管系统是由北京锐捷数据时代科技有限公司开发的新一代基于云的网络管理软件&#xff0c;以"…

哈希表(unordered_set、unordered_map)

文章目录 一、unordered_set、unordered_map的介绍二、哈希表的建立方法2.1闭散列2.2开散列&#xff08;哈希桶/拉链法&#xff09; 三、闭散列代码&#xff08;除留余数法&#xff09;四、开散列代码&#xff08;拉链法/哈希桶&#xff09; 一、unordered_set、unordered_map的…

数据结构之——队列详解

目录 前言&#xff1a; 一、什么是队列 二、队列的实现 2.1 队列结构 2.2 队列初始化 2.3 队列销毁 2.4 入队列 2.5 出队列 2.6 获取队列头部元素 2.7 获取队列尾部元素 2.8 获取队列中有效元素个数 2.9 检测队列是否为空 三、 代码总览 Queue.h test.c 四、例题 前言…

树莓派、ubuntu低版本python3安装库

如果遇到树莓派中自带低版本python3&#xff0c;又不想额外去安装python3时&#xff0c;可能会遇到版本过低&#xff0c;无法安装库的情况&#xff0c;以下用我实际情况举例解决方案。 本次遇到的问题是树莓派低版本中&#xff0c;python3为3.7.3&#xff0c;需要安装numpy&am…

Python专题:八、列表(1)

Python的内置数据类型 数据类型&#xff1a;列表 list类型 可以是字符串&#xff0c;浮点数&#xff0c;整数&#xff0c;列表 列表特性 ①集合性的数据类型 ②列表是有序的 ③列表是可更新的 访问列表元素的方式也是[索引]&#xff0c;也是从0开始的&#xff0c;不能超过…

EasyNmon服务器性能监控工具环境搭建

一、安装jdk环境 1、看我这篇博客 https://blog.csdn.net/weixin_54542209/article/details/138704468 二、下载最新easyNmon包 1、下载地址 https://github.com/mzky/easyNmon/releases wget https://github.com/mzky/easyNmon/releases/download/v1.9/easyNmon_AMD64.tar.…

Ansible-inventory和playbook

文章目录 一、inventory 主机清单1、列表表示2、inventory 中的变量3、变量3.1 主机变量3.2 组变量3.3 组嵌套 二、playbook剧本1、playbook的组成2、编写剧本2.1 剧本制作2.2 准备nginx.conf2.3 运行剧本2.4 查看webservers服务器2.5 补充参数 3、剧本定义、引用变量3.1 剧本制…

kdb 调试内核-延迟驱动加载

说明: 系统在启动过程中&#xff0c;一些要调试的驱动在 "进入kdb 之前" 就已经加载了&#xff0c; 那么&#xff0c;我们就需要延迟 "加载驱动" #define XX_module_platform_driver(__platform_driver) \XX_module_driver(__platform_driver, platform_d…

【Java】高效解决 非降序数组合并 两种方法

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持&#xff01; oj&#xff1a;https://leetcode.cn/problems/merge-sorted-array/submissions/ 合并两个有序数组是个经典问题&#xff0c;它不仅在算法学习中频繁出现&#xff0c;也在实际开发中经常遇到。合并数…

计算机毕业设计】springbootBBS论坛系统

本系统为用户而设计制作 BBS论坛系统&#xff0c;旨在实现BBS论坛智能化、现代化管理。本BBS论坛自动化系统的开发和研制的最终目的是将BBS论坛的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的便利和条件。使BBS论坛系统数字化…

ADS基础介绍篇1

一. ADS简介 常用的射频仿真软件有ADS和AWR&#xff0c;ADS(Advanced Design system)最传统&#xff0c;是Agilent公司于2008年推出的电磁场仿真器&#xff0c;可提供原理图设计和layout版图设计。仿真功能十分强大&#xff0c;可提供从无源到有源&#xff0c;从直流到交流&am…

Docker搭建ctfd平台

安装docker和docker-compose &#xff08;1&#xff09;安装docker&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun&#xff08;2&#xff09;安装 Docker Compose&#xff1a; yum install docker-compose安装失败参考下面文章 https:/…

stm32——OLED篇

技术笔记&#xff01; 一、OLED显示屏介绍&#xff08;了解&#xff09; 1. OLED显示屏简介 二、OLED驱动原理&#xff08;熟悉&#xff09; 1. 驱动OLED驱动芯片的步骤 2. SSD1306工作时序 三、OLED驱动芯片简介&#xff08;掌握&#xff09; 1. 常用SSD1306指令 2. …

初识sql注入--手工注入

目录 可能使用的sql函数 入侵网站方式 1、文件上传漏洞 2、rce 3、sql注入 SQL注入 什么是sql注入 进行SQL注入 实验环境 开始实验&#xff08;使用information_shema数据库&#xff09; 1、进入靶场 2、报列数 下面来解释一下为什么要照上面SQL语句写 url编码 单…