MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作

news2024/10/5 14:03:41

在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaEE
操作系统

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


MyBatisPlus

  • 一、 查询条件设置
  • 二、 映射匹配兼容性
    • 2.1 字段映射与表名映射
    • 2.2 编码中出现了数据库中未出现的属性
    • 2.3 采用默认查询开放了更多的字段查看权限
    • 2.4 表名映射设置
  • 三、 id生成策略
    • 3.1 id生成策略控制
    • 3.2 id生成策略全局配置
    • 3.3 表名前缀全局配置
    • 3.4 全局配置(综合id生成前缀和表名前缀)
  • 四、多数据操作

一、 查询条件设置

查询条件

  • 范围匹配(>、= 、between)
  • 模糊匹配(like)
  • 空判定(null)
  • 包含性匹配(in)
  • 分组(group)
  • 排序(order)
  • 用户登录
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		//等同于"="
		lqw.eq(User::getUsername,"张三").eq(User::getPassword,123);
		List<User> selectList = userDao.selectList(lqw);
		System.out.println(selectList);
  • 购物设定价格区间、户籍设定年龄区间(le ge匹配或者between匹配)
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		//范围查询lt le gt ge eq between
		lqw.between(User::getId,1,3);
		User user = userDao.selectOne(lqw);
		System.out.println(user);
  • 查信息、搜索新闻(非全文检索版:like匹配)
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		//模糊匹配 like
		lqw.like(User::getUsername,"张");
		List<User> userList = userDao.selectList(lqw);
		System.out.println(userList);
  • 统计报表(分组查询聚合函数)
		QueryWrapper<User> qw = new QueryWrapper<>();
		qw.select("count(*) as count");
		qw.groupBy("gender");
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		List<User> userList = userDao.selectList(lqw);
		System.out.println(userList);

二、 映射匹配兼容性

2.1 字段映射与表名映射

  • 名称:@TableFiled
  • 类型:属性注解
  • 位置:模型类属性定义上方
  • 作用:设置当前属性对应的数据库表中的字段关系
  • 范例:
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:
    • value(默认):设置数据库表字段名称

2.2 编码中出现了数据库中未出现的属性

  • exist:设置属性在数据库表字段中是否存在,默认为true,此属性无法与value合并使用。
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
    @TableField(exist = false)
    private Integer online;
}

2.3 采用默认查询开放了更多的字段查看权限

  • select:设置属性是否参与查询,此属性与select()映射匹配不冲突
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password",select = false)
    private String passWord;
    private String gender;
    private String addr;
    @TableField(exist = false)
    private Integer online;
}

2.4 表名映射设置

  • 名称:@TableName
  • 类型:类注解
  • 位置:模型类属性定义上方
  • 作用:设置当前类对应与数据库表关系
  • 范例:
@TableName("tb_user")
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:
    • value:设置数据库表名称

三、 id生成策略

3.1 id生成策略控制

  • 不同的表应用不同的id生成策略
    • 日志:自增(1,2,3,4,5…)
    • 购物订单:特殊规则(FQ23948AK3843)
    • 外卖单:关联地区日期等信息(10 04 20200314 34 91)
    • 关系表:可省略id
  • 名称:@TableId
  • 类型:属性注解
  • 位置:模型类中用于表示主键的属性定义上方
  • 作用:设置当前类中主键属性的生成策略
  • 范例:
@TableName("tb_user")
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:

    • value:设置数据库主键名称
    • type:设置主键属性的生成策略,值参照IdType枚举值
  • AUTO(0):使用数据库id自增策略控制id生成

  • NONE(1):不设置id生成策略

  • INPUT(2):用户手工输入id

  • ASSIGN_ID(3):雪花算法生成id(可兼容数值型与字符串型)
    在这里插入图片描述

  • ASSIGN_UUID(4):以UUID生成算法作为id生成策略

3.2 id生成策略全局配置

@TableName("tb_user")
public class User {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
}

3.3 表名前缀全局配置

@TableName("tb_user")
public class User {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
}

3.4 全局配置(综合id生成前缀和表名前缀)

# 设置统一id生成算法(为所有实体类设置)
mybatis-plus:
  global-config:
    banner: false
    db-config:
      id-type: assign_id
      # 设置数据库表名前缀
      table-prefix: tb_

四、多数据操作

  • 按照主键删除多条记录
void testDelete() {
		List<Long> list = new ArrayList<>();
		list.add(1698537145196683265L);
		list.add(1698539961168465921L);
		list.add(1698540047797653506L);
		userDao.deleteBatchIds(list);
	}
  • 根据主键查询多条记录
void testSelect() {
		List<Long> list = new ArrayList<>();
		list.add(1L);
		list.add(2L);
		list.add(3L);
		list.add(4L);
		userDao.selectBatchIds(list);
	}

在这里插入图片描述

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

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

相关文章

数据结构day7栈-链式栈原理及实现

全部代码&#xff1a; main.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "linkstack.h"int main(int argc, char *argv[]) {linkstack s;s stack_create();if(s NULL){return -1;}stack_push(s, 10);stack_push(s…

[图文并茂]C++线性表及其逻辑结构

1.1线性表的定义 线性表是具有相同特性的数据元素的一个有限序列 对应的逻辑结构图形&#xff1a; 从线性表的定义中可以看出它的特性&#xff1a; &#xff08;1&#xff09;有穷性&#xff1a;一个线性表中的元素个数是有限的 &#xff08;2&#xff09;一致性&#xff1a…

注册登录首选,趣味滑块验证码

前言 注册登录账户时&#xff0c;保障账户安全是首要任务&#xff01;使用趣味滑块验证码&#xff0c;既能有效防御恶意攻击&#xff0c;又能为验证过程增添一丝乐趣。让注册和登录变得更加有趣又安全&#xff01; HTML代码 <script src"https://cdn6.kgcaptcha.co…

Ubutnu python2与python3切换

python -V #查看默认版本 Python 2.7.17 python3 -V #查看电脑3的版本 Python 3.6.9 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2 #设置两个版本的…

【Linux】虚拟地址空间理解

虚拟地址空间 虚拟地址是操作系统管理内存的一种方式。**方便不同进程使用的虚拟地址彼此隔离。方便物理内存中不相邻的内存在虚拟地址上视为连续的来使用。虚拟地址和物理地址的映射是通过MMU页表进行的。虚拟内存对实际内存有保护作用。

LeetCode(力扣)17. 电话号码的字母组合Python

LeetCode17. 电话号码的字母组合 题目链接代码 题目链接 https://leetcode.cn/problems/letter-combinations-of-a-phone-number/ 代码 class Solution:def __init__(self):self.letterMap ["", # 0"", # 1"abc", # 2"def&qu…

备战9月9日C/C++青少年等级考试(1~8级)

由中国电子学会举办的《全国青少年软件编程等级考试》将于9月9日&#xff08;周六&#xff09;举行&#xff0c;你准备的怎么样了&#xff1f;我在这里列举了1~8级的历届真题及解析&#xff0c;希望能助你考试通过&#xff01;&#xff01;&#xff01; C/C编程一级 一级标准 …

Go调用jenkins api执行流水线构建与停止

用到的库&#xff1a; "github.com/bndr/gojenkins" 代码如下&#xff0c;一次到位&#xff1a; import ("context""fmt""time""github.com/bndr/gojenkins" )// 构建指定任务 func buildJob(ctx context.Context, jenkins…

CUDA 问题 ,一直头大。。。。

1.卸载cuda ubuntu系统安装/卸载cuda和cudnn_怎么删除cudnn_Zhijun.liStudio的博客-CSDN博客ubuntu系统安装/卸载cuda和cudnn_怎么删除cudnnhttps://blog.csdn.net/weixin_45921929/article/details/128849198?ops_request_misc%257B%2522request%255Fid%2522%253A%252216939…

机器学习算法系列————决策树(二)

1.什么是决策树 用于解决分类问题的一种算法。 左边是属性&#xff0c;右边是标签。 属性选择时用什么度量&#xff0c;分别是信息熵和基尼系数。 这里能够做出来特征的区分。 下图为基尼系数为例进行计算。 下面两张图是对婚姻和年收入的详细计算过程&#xff08;为GINI系…

Hive_Hive统计指令analyze table和 describe table

之前在公司内部经常会看到表的元信息的一些统计信息&#xff0c;当时非常好奇是如何做实现的。 现在发现这些信息主要是基于 analyze table 去做统计的&#xff0c;分享给大家 实现的效果某一个表中每个列的空值数量&#xff0c;重复值数量等&#xff0c;平均长度 具体的指令…

Freecycle出现大规模数据泄露事件,影响700万用户

Freecycle是一个致力于交换二手物品的在线论坛&#xff0c;拥有来自全球5300多个地方城镇的近1100万名用户。该论坛近日发生了大规模数据泄露事件&#xff0c;700 多万用户受到影响。 该组织称是在上周三&#xff08;8月30日&#xff09;发现这一漏洞的&#xff0c;而在此之前…

Nand Flash的特性及烧录问题

目录 前言 一 Nand flash的特性 1 存储结构 2 OOB区域 3 位翻转 4 坏块及ECC 二 Nand系统裸片量产烧录 1 坏块处理策略 2 分区(Partition) 3 纠错码(Error Correction Codes&#xff0c;ECC) 4. 擦除坏块 &#x1f388;个人主页&#x1f388;&#xff1a;linux_嵌入式…

LeetCode(力扣)39. 组合总和Python

LeetCode20. 有效的括号 题目链接代码 题目链接 https://leetcode.cn/problems/combination-sum/description/ 代码 class Solution:def backtracking(self, candidates, stratindex, path, target, result, total):if total > target:returnif total target:result.ap…

php://filter协议在任意文件读取漏洞(附例题)

php://filter php://fiter 中文叫 元器封装&#xff0c;咱也不知道为什么这么翻译&#xff0c;目前我的理解是可以通过这个玩意对上面提到的php IO流进行处理&#xff0c;及现在可以对php的 IO流进行一定操作。 过滤器&#xff1a;及通过php://filter 对php 的IO流进行的具体…

React中父子组件参数传递讲解

文章目录 结合案例&#xff1a;github搜索案例1.父容器代码2.搜索Search子模块代码3.展示Lisi子模块代码 父子参数传递分析1.子(Search)传父(App)2.父(App)传子(List) 结合案例&#xff1a;github搜索案例 案例结果展示如下图 1.父容器代码 import React, { Component } fr…

经典浏览器の介绍

经典浏览器&#xff0c;这里给你介绍几款常见的浏览器&#xff1a; Google Chrome&#xff1a;Google Chrome是由Google开发的一款流行的浏览器。它以出色的性能和速度而闻名&#xff0c;能够快速加载网页。Chrome还支持大量的扩展和应用程序&#xff0c;可以个性化定制浏览器功…

二进制安全虚拟机Protostar靶场(2)基础知识讲解,栈溢出覆盖变量 Stack One,Stack Two

前言 Protostar靶场的安装和一些二进制安全的基础介绍在前文已经介绍过了&#xff0c;这里是文章链接 https://blog.csdn.net/qq_45894840/article/details/129490504?spm1001.2014.3001.5501什么是缓冲区溢出 当系统向缓冲区写入的数据多于它可以容纳的数据时&#xff0c;…

算法通关村第十九关——最小路径和

LeetCode64. 给定一个包含非负整数的 m n 网格 grid,请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 输入&#xff1a;grid[[1,3,1],[1,5,1],[4,2,1]] 输出&#xff1a;7 解释&#xff1a;因为路径1→3→1→1→1的总和最小。 public int minPath…

交叉熵损失函数(Cross-Entropy Loss)

交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;是在深度学习中常用的损失函数之一&#xff0c;它适用于分类问题。交叉熵损失函数的作用是衡量预测结果与真实标签之间的差距&#xff0c;从而用于模型的优化。 越接近真实标签&#xff0c;损失越小。在交叉熵损失函…