MyBatis-plus(一):快速入门

news2024/12/23 12:06:31

目录

一、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.coloradmin.cn/o/1666156.html

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

相关文章

Leetcode 剑指 Offer II 077.排序链表

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排…

STM32入门_江协科技_5~6_OB记录的自学笔记_GPIO输出_LED流水灯_蜂鸣器

5. GPIO 输出 5.1. GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口可配置为8种输入输出模式引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V&#xff08;端口输入5V的电压&#xff0c;之前引脚定义表格中带FT标识的&#xff09…

暗区突围哪里获得测试资格 暗区突围测试资格获取方法

在游戏业界的浩瀚星空中&#xff0c;《暗区突围》如同一颗璀璨新星&#xff0c;以其独树一帜的游戏模式和前所未有的沉浸式体验&#xff0c;迅速吸引了全球玩家的目光。它不仅仅是一款游戏&#xff0c;更像是一次对勇气、智慧与团队合作的深度探索。玩家在危机四伏的暗区中&…

【软考高项】四十四、高级项目管理

一、项目集管理 相关角色 项目集发起人、项目集指导委员会、项目集经理、其他影响项目集的干系人项目集管理绩效域 项目集战略一致性、项目集效益管理、项目集干系人参与、项目集治理和项目集生命周期管理 二、项目组合管理 项目组合经理角色 项目组合管理原…

软件测试报告(交付文档支撑word原件)

软件测试报告在软件开发过程中起着至关重要的作用&#xff0c;主要有以下几个主要原因&#xff1a; 1、确保软件质量 2、提供决策支持 3、记录测试过程和结果 4、促进沟通和协作 5、符合标准和法规要求 6、改进测试流程和策略 7、降低风险 软件开发全套资料获取进主页或者本文…

【字符函数与字符串函数】

文章目录 一、strlen函数1.strlen函数的使用2.strlen函数的模拟实现(1)计算器办法(2)不创建临时变量计数器(3)指针 二、strcpy函数1、strcpy函数的使用2、strcpy函数的模拟实现 三、strcat函数1、strcat函数的使用2、strcat模拟实现3、字符串自己给自己追加&#xff1f; 四、st…

2024年数维杯数学建模

高质量原创论文已完成 需要的私我

构建内网yum仓库

1、环境介绍 系统&#xff1a;龙蜥os 7.9 2、安装epel源 yum install epel-release -y3、安装nginx服务器并启动 yum install nginx httpd -y配置 server {listen 80;server_name repo.wtown.com;root /usr/share/nginx/html/repo;index index.html index.htm;location / {…

信息安全-古典密码学简介

目录 C. D. Shannon: 一、置换密码 二、单表代替密码 ① 加法密码 ② 乘法密码 ③密钥词组代替密码 三、多表代替密码 代数密码 四、古典密码的穷举分析 1、单表代替密码分析 五、古典密码的统计分析 1、密钥词组单表代替密码的统计分析 2、英语的统计规…

报表-集成

1、部署报表服务器 以centos为例 1.1 将服务拷贝到服务器 其中JDK-17是对应平台的jdk 1.2 修改lite-report下的source.config 1.3 把设计好的报表文件拷贝到lite-report/report 1.4 启动服务&#xff1a;sh run.sh restart 2、使用Nginx location /litereport/ { …

前端笔记-day1

文章目录 01-标签的写法02-HTML的基本骨架03-标签的关系04-注释05-标题标签06-段落标签07-换行与水平线标签08-文本格式化标签09-图像的基本使用10-图像的属性12-绝对路径13-超链接14-音频15-视频标签16-招聘案例18-个人简历19-vue简介 01-标签的写法 <strong>文字内容&…

LabVIEW开发MOOG控制系统数据处理软件

LabVIEW开发MOOG控制系统数据处理软件 在现代航空领域&#xff0c;飞机结构的静强度试验是保证飞机安全运行的关键环节。MOOG加载控制系统作为试验中的关键设备&#xff0c;其数据输出的直观性和易处理性对于提高试验效率具有重要意义。设计了一种基于LabVIEW的MOOG控制系统数…

##15 探索高级数据增强技术以提高模型泛化能力

文章目录 前言数据增强的重要性常见的数据增强技术高级数据增强技术在PyTorch中实现数据增强结论 前言 在深度学习领域&#xff0c;数据增强是一种有效的技术&#xff0c;它可以通过在原始数据上应用一系列变换来生成新的训练样本&#xff0c;从而增加数据的多样性&#xff0c…

Redis过期删除策略和内存淘汰策略有什么区别?

Redis过期删除策略和内存淘汰策略有什么区别&#xff1f; 前言过期删除策略如何设置过期时间&#xff1f;如何判定 key 已过期了&#xff1f;过期删除策略有哪些&#xff1f;Redis 过期删除策略是什么&#xff1f; 内存淘汰策略如何设置 Redis 最大运行内存&#xff1f;Redis 内…

ADS基础介绍篇1

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

算法提高之矩阵距离

算法提高之矩阵距离 核心思想&#xff1a;多源bfs 从多个源头做bfs&#xff0c;求距离 先把所有1的坐标存入队列 再把所有1连接的位置存入 一层一层求 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 1…

关于画图-一次性搞定各类高级论文作图及配色

关于画图-一次性搞定各类高级论文作图及配色 图&#xff08;Figure&#xff09;可以让各类论文的结果更加直观&#xff0c;有时候一张图片比一大段文字更有说服力。 但许多新手作者可能会有一连串的疑惑&#xff1a;数据这么多&#xff0c;什么时候该做什么类型的图&#xff…

NASA数据集——2002-2011年全球18.7 至 89.0 千兆赫的亮度温度、海冰浓度和海冰积雪深度三级网格产品(AE_SI12)数据

AMSR-E/Aqua Daily L3 12.5 km Brightness Temperature, Sea Ice Concentration, & Snow Depth Polar Grids V003 三级网格产品&#xff08;AE_SI12&#xff09;包括 18.7 至 89.0 千兆赫的亮度温度、海冰浓度和海冰积雪深度。 简介 美国国家航空航天局地球观测系统 Aqu…

##16 利用迁移学习和微调提升深度学习模型性能

文章目录 前言什么是迁移学习&#xff1f;迁移学习的主要优势迁移学习的策略1. 特征提取器2. 微调 在PyTorch中实现迁移学习环境设置加载预训练模型修改模型以适应新任务训练和微调模型迁移学习的示例应用 结论 前言 在深度学习的多个领域中&#xff0c;迁移学习技术已经成为了…

现代信号处理9_正则化(CSDN_20240512)

正则化的引入 解线性方程组&#xff1a; 这项工作有很多种做法&#xff0c;下面介绍两种&#xff0c;如下图所示&#xff0c;有一些数据点需要拟合&#xff0c;拟合的方法有很多。 1&#xff09; 构造线性函数①&#xff0c;这种函数比较简单&#xff0c;此时 2&#xff09; 构…