【MyBatis Plus】003 -- 配置(基本、进阶、DB策略) 条件构造器

news/2024/4/24 20:48:08/

目录

4、配置

4.1 基本配置

4.1.1 configLocation (MyBatis 配置文件位置)

4.1.2 mapperLocations(MyBatis Mapper 所对应的 XML 文件位置)

4.1.3 typeAliasesPackage (别名包扫描路径)

4.2 进阶配置

4.2.1 mapUnderscoreToCamelCase (是否开启自动驼峰命名规则(camel case)映射)

4.2.2 cacheEnabled (二级缓存开关)

4.3 DB 策略配置

4.3.1 idType(主键生成策略)

4.3.2 tablePrefix (指定表名前缀)

5、条件构造器

5.1 allEq

5.1.1 说明

5.2 基本比较操作(eq/ne/gt/ge/lt/le/between/notBetween/in/notIn)

5.3 模糊查询(like/notlike/likeleft/likeRight)

5.4 排序

5.5 逻辑查询

5.6 select (指定查询字段)


4、配置

在MP中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是MP的配置,详情: 使用配置 | MyBatis-Plus

下面我们对常用的配置做讲解:

4.1 基本配置

4.1.1 configLocation (MyBatis 配置文件位置)

MyBatis 配置文件位置,如果您有单独的 MyBatis 配置,请将其路径配置到 configLocation 中。 MyBatis Configuration 的具体内容请参考MyBatis 官方文档

Spring Boot:(application.properties),指定全局的配置文件

Mybatis-config.xml:(但一般我们还是会用专门的配置类来管理第三方插件

Spring MVC:(applicationContext.xml)

4.1.2 mapperLocations(MyBatis Mapper 所对应的 XML 文件位置)

MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。

Spring Boot:

Spring MVC:

注意:Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件)

测试SpringBoot方法中的自定义Mapper方法:(UserMapper.xml)

Mapper方法:

测试用例:

运行结果:

4.1.3 typeAliasesPackage (别名包扫描路径)

MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名)

Spring Boot:

Spring MVC:

测试SpringBoot方式中的实体对象扫描包:

定义完扫描包,我们就可以讲UserMapper中的全类名省略,只写个类名即可:

测试用例:

运行结果:(运行成功,正常返回)

4.2 进阶配置

本部分(Configuration)的配置大都为 MyBatis 原生支持的配置,这意味着您可以通过 MyBatis XML 配置文件的形式进行配置

4.2.1 mapUnderscoreToCamelCase (是否开启自动驼峰命名规则(camel case)映射)

是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。

示例(SpringBoot):

错误结果:

为什么?

因为如果我们配置了mybatis-plus.config-location 这就意味着我们可以在指定的配置文件中做一些相关的配置项,而这个自动驼峰映射的配置项应该挪到配置文件中才行

4.2.2 cacheEnabled (二级缓存开关)

全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true

示例:

4.3 DB 策略配置

4.3.1 idType(主键生成策略)

全局默认主键类型,设置后,即可省略实体对象中的@TableId(type = IdType.AUTO)配置

示例:SpringBoot:

SpringMVC:

4.3.2 tablePrefix (指定表名前缀)

表名前缀,全局配置后可省略@TableName()配置,但要求数据库表要具有统一的格式,如具有统一的前缀:tb_

示例:

SpringBoot:

SpringMVC:

5、条件构造器

在MP中,Wrapper接口的实现类关系如下:

可以看到,AbstractWrapperAbstractChainWrapper是重点实现,接下来我们重点学习AbstractWrapper以及其子类

官网文档地址: 条件构造器 | MyBatis-Plus

5.1 allEq

5.1.1 说明

测试用例:

设置过滤后的AllEq:如果不满足条件,则不会查询该字段,如下方示例所示,即只会按照name和age作为条件进行查询

5.2 基本比较操作(eq/ne/gt/ge/lt/le/between/notBetween/in/notIn)

测试用例:

5.3 模糊查询(like/notlike/likeleft/likeRight)

测试用例:

5.4 排序

测试用例:

5.5 逻辑查询

测试用例:

5.6 select (指定查询字段)

在MP查询中,默认查询所有的字段,如果有需要也可以通过select方法进行指定字段

测试用例:

返回结果:只有指定的字段可以返回,其它都为null


http://www.ppmy.cn/news/47229.html

相关文章

图解项目延期的原因及解决应对方案大全

项目管理中经常出现项目延期的情况,面对项目延期的风险如何应对是考验每个项目经理管理水平的时候,很多人纵然是工作多年也没有对延期的种种情况进行总结思考。 咱们社区的小竹对大家常见的项目延期情况及处理方案进行了详细全面的总结,供大…

Kotlin 泛型的使用

一、Kotlin 泛型是一种允许在编译时指定类型参数的机制&#xff0c;它可以提高代码的重用性和类型安全性。 Kotlin 泛型使用尖括号&#xff08;< >&#xff09;来指定类型参数。Kotlin 泛型支持类泛型、接口泛型和方法泛型。Kotlin 泛型可以在类、函数、接口和委托中使用…

Linux命令行操作/选项介绍,文件分类/内容与属性/绝对相对路径,隐藏文件与整个目录结构

Linux的命令行操作介绍 Linux操作的特点&#xff1a;纯命令行&#xff0c;当然Linux它也有图形化界面或桌面版。Windows也有命令行&#xff0c;也有图形化界面。不过它是面向普通客户的操作系统&#xff0c;所以必须得是好用好玩的&#xff0c;所以图形化界面那是必然。无论是…

Linux-初学者系列——篇幅3_操作界面获取帮助

操作界面获取帮助-目录 1、获取帮助信息-man2、获取帮助信息-help3、获取帮助信息-info 上篇: Linux-初学者系列——篇幅2_系统命令界面 利用帮助命令自学&#xff1a;man help info1、获取帮助信息-man 查看命令和部分文件帮助说明信息 使用方法&#xff1a; man [参数选项…

PHP快速入门07-Cookie与Session的说明与使用

文章目录 前言一、关于Cookie和Session1.1 Cookie1.2 Session 二、Cookie和Session的使用2.1 Cookie的使用例子2.2 Session的使用例子 总结 前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP快速入门与实战 Cookie和Session是一个Web开发几乎不可避免的东西&#xff0c;是网站…

【Linux网络设置】

目录 一、查看网络接口信息1.1、查看所有活动的网络接口信息1.2、查看指定网络接口信息 二、查看主机名称2.1、hostname命令2.2、永久设置主机名 三、查看路由表条目route命令 四、查看网络连接情况4.1、netstat命令4.2、ss命令 五、测试网络连接ping命令 6、跟踪数据包tracerr…

UniLM模型简单介绍

目录 一、概要 二、深入扩展 2.1 预训练任务 2.2 模型精调 一、概要 如果将基于Transformer的双向语言模型&#xff08;如BERT模型中的掩码语言模型&#xff09;与单向的自回归语言模型&#xff08;如BART模型的解码器&#xff09;进行对比&#xff0c;可以发现&#xff0c…

c# 通过webView2模拟登陆小红书网页版,解析无水印视频图片,以及解决X-s,X-t签名验证【2023年4月15日】

一、c# WebView2简介 1.一开始使用WebBrowser&#xff0c;因为WebBrowser控件使用的是ie内核&#xff0c;经过修改注册表切换为Edge内核后&#xff0c; 发现Edge内核版本较低&#xff0c;加载一些视频网站提示“浏览器版本过低“&#xff0c;”视频无法加载“。 2.WebBrowser…

交互式shell脚本编程2

当你在终端环境下安装新的软件时&#xff0c;你可以经常看到信息对话框弹出&#xff0c;需要你的输入&#xff0c;比如&#xff1a;RHEL/CentOS自带的setup&#xff0c;对话框的类型有密码箱、检查表、菜单等等。他们可以引导你以一种直观的方式输入必要的信息&#xff0c;使用…

精通 TensorFlow 1.x:16~19

原文&#xff1a;Mastering TensorFlow 1.x 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关心如何实现目标。—…

UDS统一诊断服务【五】诊断仪在线0X3E服务

文章目录 前言一、诊断仪在线服务介绍二、数据格式2.1&#xff0c;请求报文2.2&#xff0c;子功能2.3&#xff0c;响应报文 前言 本文介绍UDS统一诊断服务的0X3E服务&#xff0c;希望能对你有所帮助 一、诊断仪在线服务介绍 诊断仪在线服务比较简单&#xff0c;其功能就是告诉…

【JavaEE】File、InputStream和OutputStream的使用

1.File 在计算机中目录结构如下&#xff1a; 而File就表示一个目录或者一个普通文件。 File表示目录&#xff1a; File表示普通文件&#xff1a; 我们先来看File的构造方法&#xff1a; 构造器描述File(File parent, String child)根据父目录 孩子文件路径&#xff0c;创…

玄子Share - 精选三套 JavaScript 练手项目

玄子Share - 精选三套 JavaScript 练手项目 1. 50 Projects in 50 Days - HTML/CSS and JavaScript 50 天 50 个前端练手项目 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dCWO6V2G-1682076972984)(./assets/image-20230421192413713.png)] [外链…

VUE3的使用

文章目录 一、Vue3基础语法1、Vue开发准备2、Vue的模板语法3、条件渲染4、列表渲染5、事件处理6、表单输入绑定 二、Components组件1、组件基础2、组件交互3、自定义事件的组件交互4、组件生命周期5、引入第三方组件 三、网络请求及路由配置1、Axios网络请求2、Axios网络请求封…

【rustdesk】rust入门及 windows尝试编译

rustup 微软建议用vs code开发 下载了64位的版本: vs code 插件 rust-analyer 介绍Better TOML,用于更好的展示.toml文件Error Lens, 更好的获得错误展示 One Dark Pro, 非常好看的Vscode主题 CodeLLDB, debugger程序 安装

vue:生成二维码 qrcode、vue-qr(二维码中间可带logo)

一、方法一 qrcode qrcode - npm 1.1、安装 yarn add qrcode 1.2、页面引入 import QRCode from qrcode; 1.3、方法里边使用 getQRCodeUrl(){ QRCode.toDataURL(hello world,{color: {dark:"#010599FF",light:"#FFBF60FF"}}).then((url) > {// 获…

循环结构化命令小结

shell脚本编程系列 循环是编程不可或缺的一部分。bash shell提供了三种循环命令。 for命令允许遍历一系列的值&#xff0c;无论是在命令行中提供的&#xff0c;还是包含在变量中的&#xff0c;或是通过文件名通配符匹配获得的文件名和目录名。 for var in list docommands do…

MySQL索引数据结构入门

之前松哥写过一个 MySQL 系列&#xff0c;但是当时是基于 MySQL5.7 的&#xff0c;最近有空在看 MySQL8 的文档&#xff0c;发现和 MySQL5.7 相比还是有不少变化&#xff0c;同时 MySQL 又是小伙伴们在面试时一个非常重要的知识点&#xff0c;因此松哥打算最近再抽空和小伙伴们…

在React中使用setState修改数组的值时,为什么不能使用数组的可变方法(push、unshift等)? 但在vue中可以

一、为什么React中修改数组时不能使用数组的可变方法 在React中使用setState修改数组的值时&#xff0c;不推荐使用数组的可变方法&#xff08;如push、unshift等&#xff09;。这是因为React会对比新旧状态&#xff0c;在发现状态变化后&#xff0c;更新组件的渲染。但当你调…

TiDB实战篇-TiDB Cluster部署

简介 部署TiDB Cluster部署&#xff0c;熟系集群的基础操作。 集群规划 机器拓扑 3pd,3tikv,1tidb_server.1tiflash,监控。 192.168.66.10192.168.66.20192.168.66.21 pd_servers tikv_servers tidb_servers tiflash_servers pd_servers tikv_servers monitoring_servers…