mybatis-plus(2)

上文我们介绍完mybatis-plus的常用注解,现在介绍 mp的基础的yaml配置

mybatis-plus:type-aliases-package: #该位置写 数据库对应实体类的全路径global-config:db-config:id-type: auto # 全局id类型为自增长

mp同时也是支持手写sql,而且mapper的读取地址可以自己配置

一般默认为   

mybatis-plus:mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,当前这个是默认值。

就放在resource文件下的 mapper文件下

条件构造器

所谓条件构造器,就是 在我们基础的crud之后,我们还需要进行 where条件之类的条件语句进行sql的编写,而basemapper也是支持哒

.

传入的wapper就是条件构造的抽象类,里面有默认实现  继承关系如下

 wapper的子类abstractwapper 包含了where的所有条件构造方法,querywapper 在abstracewapper的基础上拓展了select方法可以查询指定字段,updatewapper拓展了一个set方法,允许指定sql中的set部分

Querywapper应用

现在 我们用 Querywapper查询数据库user表中名字带 o 的人,并且存款大于1000的人的基础信息

普通版sql 

select u.id,u.username,u.info,u.balance from User u where  username like '%o%' and balance >=1000

 mp的querywapper版

我们再看查询到的日志

他完成的本质也是 sql的拼接

UpdateWapper

现在我们给一个条件    更新id为1 2 4的用户 的余额都i减200   sql的编写应该为

UPDATE user SET balance = balance - 200 WHERE id in (1, 2, 4)

对应的updatewapper应该是

LambdaQueryWrapper

上面的两个wrapper 都需要写死字段名称,但这样是会出现字符串魔法值,这是不被允许的而且不够优雅,我们可以基于反射,来获取对应的实体类的对应数据库的字段名称

这些wapper的本质  就是使用其中的方法进行sql语句的拼接,wrapper 就是构建sql语句,然后把构建好的wrapper 传入需要 使用的 mapper 中去 进行sql的执行 

自定义的sql

我们还是 给出一个查询条件   扣减指定id用户的工资 200    sql  为

update user set  balance=balance-200 where in (x,x)

在我们自定的sql中可以这样写

其中该deletemoney方法是自己写的

这是 usermapper接口中和xml文件中的方法   

其中  第二个  Constants .wrapper 为  mp中的一个定义的常量类 , 后面的

 ${ew.customSqlSegment} 是拼接 wrapper sql语句的固定格式

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

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

相关文章

mac定时任务、自启动任务

https://quail.ink/mynotes/p/mac-startup-configuration-detailed-explanation <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.d…

数据库入门(sql文档+命令行)

一.基础知识 1.SQL&#xff08;Structured Query Language&#xff09;结构化查询语言分类&#xff1a; DDL数据定义语言用来定义数据库对象&#xff1a;数据库、表、字段DML数据操作语言对数据库进行增删改查DQL数据查询语言查询数据库中表的信息DCL数据控制语言用来创建数据…

CSS 块状元素

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

CV每日论文--2024.5.10

1、Attention-Driven Training-Free Efficiency Enhancement of Diffusion Models 中文标题&#xff1a;扩散模型的注意力驱动的训练免费效率增强 简介&#xff1a;扩散模型在生成高质量和多样化图像方面取得了出色的表现,但其卓越性能是以昂贵的架构设计为代价的,特别是广泛使…

React Native 之 原生组件和核心组件(二)

原生组件 在 Android 开发中是使用 Kotlin 或 Java 来编写视图&#xff1b;在 iOS 开发中是使用 Swift 或 Objective-C 来编写视图。在 React Native 中&#xff0c;则使用 React 组件通过 JavaScript 来调用这些视图。在运行时&#xff0c;React Native 为这些组件创建相应的 …

ms17-010(永恒之蓝)

1.漏洞介绍: 永恒之蓝&#xff08;ms17-010&#xff09;爆发于2017年4月14日晚&#xff0c;是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限&#xff0c;以此来控制被入侵的计算机。甚至于2017年5月12日&#xff0c; 不法分子通过改造“永恒之蓝”制作了wannacry勒索病…

MobileNet 网络详解

一、了解 网络亮点&#xff1a; 1、DW网络&#xff0c;大大减少运算量和参数数量 2、增加超参数&#xff1a;控制卷积层卷积核个数的超参数 &#xff0c;控制图像输入大小的超参数 &#xff0c;这两个超参数是人为设定的&#xff0c;不是机器学习到的。 二、DW卷积&#xff…

黑马甄选离线数仓项目day02(数据采集)

datax介绍 官网&#xff1a; https://github.com/alibaba/DataX/blob/master/introduction.md DataX 是阿里云 DataWorks数据集成 的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre…

4.分支与循环

逻辑控制分为三部分&#xff1a; 1.顺序结构---》顺序执行代码 2.分支结构---》if语句和switch语句 3.循环执行---》for语句 while语句 和do while语句 顺序结构比较简单&#xff0c;按照代码书写的顺序一行一行执行 分支结构&#xff08;if、switch语句&#xff09; 也就是…

排序-冒泡排序(bubble sort)

冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它重复地遍历待排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成…

微信小程序开发题库

一. 单选题&#xff08;共12题&#xff0c;60分&#xff09; 1. (单选题) 有如下HTML代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Document</title> <style> ul,li{ margin:0; p…

基于springboot实现教师工作量管理系统项目【项目源码+论文说明】

基于springboot实现教师工作量管理系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;教师信息因为其管理内容繁杂&#xff0c…