当前位置: 首页 > news >正文

Mybatis SQL构建器类 - SqlBuilder and SelectBuilder (已经废弃)

在3.2版本之前,我们采用了一种略有不同的方法,通过利用ThreadLocal变量来掩盖一些使Java DSL有点繁琐的语言限制。然而,这种方法现在已被弃用,因为现代框架已经普及了使用构建器模式和匿名内部类的概念。因此,SelectBuilder和SqlBuilder类已被弃用。

以下方法仅适用于已弃用的SqlBuilder和SelectBuilder类。

Method(方法)Description(描述)
BEGIN() / RESET()这些方法用于清除SelectBuilder类的ThreadLocal状态,并准备构建新的语句。BEGIN()在开始一个新语句时使用效果最佳。RESET()在执行中清除语句时使用效果最佳,可能是因为逻辑要求在某些条件下完全不同的语句。
SQL()这个方法返回生成的SQL语句,并重置SelectBuilder的状态(就像调用了BEGIN()或RESET()一样)。因此,这个方法只能调用一次!

SelectBuilder和SqlBuilder类并不具有神奇的功能,但了解它们的工作原理很重要。SelectBuilder和SqlBuilder使用静态导入和ThreadLocal变量的组合,以实现干净的语法,可以轻松地与条件语句交织在一起使用。要使用它们,您可以像这样静态导入类中的方法(选其中一个导入,不要同时导入两个):

import static org.apache.ibatis.jdbc.SelectBuilder.*;
import static org.apache.ibatis.jdbc.SqlBuilder.*;

这使我们可以创建以下类似的方法:

/* DEPRECATED */
public String selectBlogsSql() {BEGIN(); // Clears ThreadLocal variableSELECT("*");FROM("BLOG");return SQL();
}
/* DEPRECATED */
private String selectPersonSql() {BEGIN(); // Clears ThreadLocal variableSELECT("P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME");SELECT("P.LAST_NAME, P.CREATED_ON, P.UPDATED_ON");FROM("PERSON P");FROM("ACCOUNT A");INNER_JOIN("DEPARTMENT D on D.ID = P.DEPARTMENT_ID");INNER_JOIN("COMPANY C on D.COMPANY_ID = C.ID");WHERE("P.ID = A.ID");WHERE("P.FIRST_NAME like ?");OR();WHERE("P.LAST_NAME like ?");GROUP_BY("P.ID");HAVING("P.LAST_NAME like ?");OR();HAVING("P.FIRST_NAME like ?");ORDER_BY("P.ID");ORDER_BY("P.FULL_NAME");return SQL();
}

相关文章:

Mybatis SQL构建器类 - SqlBuilder and SelectBuilder (已经废弃)

在3.2版本之前,我们采用了一种略有不同的方法,通过利用ThreadLocal变量来掩盖一些使Java DSL有点繁琐的语言限制。然而,这种方法现在已被弃用,因为现代框架已经普及了使用构建器模式和匿名内部类的概念。因此,SelectBu…...

【Linux】不常用命令记录

查看开启的网络端口 1、使用netstat命令“netstat -tuln”,该命令将显示所有当前监听的TCP和UDP端口; 2、使用ss命令“ss -tuln”,用于显示当前监听的TCP和UDP端口; 3、使用lsof命令“lsof -i”,将显示当前打开的网络…...

【docker】安装docker环境并启动容器

一、安装docker 这里以centos系统为例安装docker环境 # 删除已有安装包 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-enginesudo yum install -y yum-utils # 设置源 y…...

AIOps探索 | 基于大模型构建高效的运维知识及智能问答平台(2)案例分享

原作者:擎创科技产品专家 布博士 案例分享 所需要的软件列表 本次案例的实现,全部采用开源或SAAS的产品来提供,并不涉及到私有化部署的软件产品。软件列表如下所示,如何申请apikey请自行研究,在这里不再详细说明&…...

【ESP32接入国产大模型之文心一言】

1. 怎样接入文心一言 随着人工智能技术的不断发展,自然语言处理领域也得到了广泛的关注和应用。在这个领域中,文心一言作为一款强大的自然语言处理工具,具有许多重要的应用价值。本文将重点介绍如何通过ESP32接入国产大模型之文心一言api&am…...

保湿剂,预计2026年市场规模将达到约230亿美元

全球市场分析 从全球市场来看,保湿剂市场规模正在快速增长。主要集中在欧美和亚太地区的市场,据市场调研机构的数据显示,预计2026年,全球保湿剂市场规模将达到约230亿美元。保湿剂的应用领域不断拓展,包括从化妆品到个…...

CodeWhisperer:编码世界中的声音启迪者

人烟 导语: 在数字化时代,编码已经成为了一种不可或缺的技能。而 CodeWhisperer(编码世界中的声音启迪者)则以其卓越的技术和深厚的知识为人们带来了独特的启发和指导。本文将介绍 CodeWhisperer 的背景和成就,探讨他是…...

golang学习专栏

GOLANG专栏 Golang基础教程 Golang基础教程 Golang练手算法 Golang练手算法 Golang设计模式 Golang设计模式 Golang数据结构和算法 Golang数据结构和算法 Golang并发编程 Golang并发编程 ORM框架Gorm Golang ORM框架gorm Golang源码分析 Golang源码分析 MySQL教程 MySQ…...

el-table表格动态添加列。多组数据拼接和多层级数据的处理

提示&#xff1a;el-table表格动态添加列 文章目录 前言一、多组数据拼接二、多层级处理三、实际应用中&#xff0c;为避免闪屏&#xff0c;可以表格数据统一渲染总结 前言 需求&#xff1a;富文本编辑器 一、多组数据拼接 <template><div class"test">…...

ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现

ThinkPHP6.0任意文件上传 PHPSESSION 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建安装thinkphp6漏洞信息配置 漏洞利用 修复建议 漏洞名称 漏洞描述 2020年1月10日&#xff0c;ThinkPHP团队发布一个补丁更新&#xff0c;修复了一处由不安全的SessionId导致的任意文…...

短说社区运营的使用工具分享(一)

本文是一篇针对短说社区运营的使用工具分享帖&#xff0c;是小编结合日常使用&#xff0c;总结的一些可以帮助网站管理员和运营人员进行日常操作和管理的工具。 1. 想天工作台之运营面板 想天工作台可以将桌面划分不同的类型来辅助办公&#xff0c;我分享下我当前的桌面情况&…...

关于.gitignore文件

.gitignore文件用于忽略git同步文件。 git上创建项目时&#xff0c;默认的.gitignore文件配置比较少&#xff0c;不太适合于windows下vs的开发设置。 下面是vs中.gitignore条目样例&#xff1a; # Prerequisites *.d# Compiled Object files *.slo *.lo *.o *.obj*.iobj *.V…...

Cell 文章图复现

多组差异火山图复现 参考文章: A Spatiotemporal Organ-Wide Gene Expression and Cell Atlas of the Developing Human Heart Figure 2. H 图里主要是单细胞数据不同cluster之间的差异火山图, 所以说白了就是散点图和柱状图的结合, 散点图用差异基因绘制, 柱状图利用logFC最…...

只需一招彻底解决SOLIDWORKS不显示缩略图预览

SOLIDWORKS缩略图能够让工程师便于识别想要打开的模型&#xff0c;但经常会有用户遇到在资源管理器中查看SOLIDWORKS文件时&#xff0c;仅显示SOLIDWORKS的图标&#xff0c;而没有相关文件的预览缩略图。 Windows文件夹选项设置 首先确保Windows文件夹选项设置&#xff0c;显…...

nccl 源码分析 从 ncclAllReduce 的执行开始认识nccl源代码

文字没有提及的代码内容&#xff0c;不需要太在意&#xff0c;当然也可以瞟两眼&#xff1b; 首先&#xff0c;总体而言函数 ncclAllReduce 的功能在于将携带了一个操作的info结构体&#xff0c;放入了队列中&#xff0c;待后面执行&#xff1b; 排队的函数调用是 ncclEnqueue…...

仿照AirDrop(隔空投送)优雅地在局域网中传输文件

基于WebRTC的局域网文件传输 在前一段时间&#xff0c;我想在手机上向电脑发送文件&#xff0c;因为要发送的文件比较多&#xff0c;所以我想直接通过USB连到电脑上传输&#xff0c;等我将手机连到电脑上之后&#xff0c;我发现手机竟然无法被电脑识别&#xff0c;能够充电但是…...

【PHP】TP5.0及Fastadmin中将查询数据返回对象转为数组

目录 方法一&#xff1a;使用collection助手函数 方法二&#xff1a;设置返回数据集的对象名 在 ThinkPHP 5.0 中&#xff0c;对模型查询返回的对象进行了优化&#xff0c;默认情况下&#xff0c;使用 all 或 select 方法查询数据库将返回一个对象数组集合。这个集合是模型的…...

大公司里怎样开发和部署前端代码?

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello&#xff0c;大家好&#xff0c;我是 Sunday。 昨天的时候有同学问到前端部署相关的内容&#xff0c;正好在知乎中看到…...

API接口:原理、设计与实践

一、引言 随着互联网的发展&#xff0c;应用程序之间的交互变得越来越频繁&#xff0c;API接口成为了不同应用程序之间进行数据交换的重要手段。本文将详细介绍API接口的原理、设计与实践&#xff0c;以期帮助读者更好地理解和应用这一技术。 二、API接口概述 API&#xff0…...

2023年TIOBE指数TOP50的编程语言写“Hello World!”

这篇文章列出了TIOBE指数TOP50的编程语言&#xff08;TIOBE Index - TIOBE&#xff09;如何写“Hello World&#xff01;”。“Hello World&#xff01;”代码应该是每个程序员学习一门编程语言最先实现的程序&#xff0c;给我们带来了很多美好的回忆&#xff0c;下面我们就一次…...

MCU内存管理实战:用__attribute__控制变量在Flash/RAM中的存放位置

MCU内存管理实战&#xff1a;用__attribute__控制变量在Flash/RAM中的存放位置 引言&#xff1a;嵌入式开发中的内存困局 在Cortex-M系列MCU开发中&#xff0c;我们常常面临这样的矛盾&#xff1a;一方面&#xff0c;片上Flash和RAM资源极其有限&#xff08;尤其是成本敏感型产…...

5分钟搞定foobar2000美化:foobox-cn让你的音乐播放器焕然一新!

5分钟搞定foobar2000美化&#xff1a;foobox-cn让你的音乐播放器焕然一新&#xff01; 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 厌倦了千篇一律的音乐播放器界面&#xff1f;想让你的foobar200…...

10分钟掌握AI-Render:在Blender中玩转Stable Diffusion的终极指南

10分钟掌握AI-Render&#xff1a;在Blender中玩转Stable Diffusion的终极指南 【免费下载链接】AI-Render Stable Diffusion in Blender 项目地址: https://gitcode.com/gh_mirrors/ai/AI-Render 你是否想过&#xff0c;在Blender这个强大的3D创作软件中&#xff0c;直接…...

工业相机丢帧问题全解析:从硬件到软件的5个实战解决方案

工业相机丢帧问题全解析&#xff1a;从硬件到软件的5个实战解决方案 在机器视觉系统的实际应用中&#xff0c;工业相机丢帧问题就像一条潜伏的生产线杀手——它可能悄无声息地导致检测漏判、定位偏差甚至整批产品质检失效。去年某汽车零部件厂商就曾因2%的随机丢帧&#xff0c;…...

3步快速恢复ROG游戏本色彩配置文件的终极指南

3步快速恢复ROG游戏本色彩配置文件的终极指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: https://gitcode.…...

阿里云:数据分析Agent白皮书——AI重构数据消费 2026

这份由阿里云与瓴羊发布的《数据分析 Agent 白皮书 ——AI 重构数据消费》&#xff0c;立足 DataAI 融合趋势&#xff0c;系统阐述了数据分析 Agent 的发展背景、技术架构、代表产品、行业实践、落地方法与未来方向&#xff0c;核心围绕AI 重构企业数据消费模式展开&#xff0c…...

NOJ编程竞赛中的五大常见错误类型及高效调试技巧

1. NOJ编程竞赛错误类型全景解析 第一次参加NOJ在线编程竞赛时&#xff0c;看到满屏的WA、CE、RE、TE错误提示&#xff0c;我整个人都是懵的。直到后来在实战中踩过无数坑&#xff0c;才发现这些错误其实都有规律可循。最常见的五大错误类型就像编程路上的五个拦路虎&#xff0…...

解锁游戏性能新境界:OptiScaler跨平台升级技术深度指南

解锁游戏性能新境界&#xff1a;OptiScaler跨平台升级技术深度指南 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 在游戏图形技术…...

知识管理革命:OpenClaw+ollama-QwQ-32B构建个人第二大脑

知识管理革命&#xff1a;OpenClawollama-QwQ-32B构建个人第二大脑 1. 为什么我们需要"第二大脑"&#xff1f; 作为一个长期被信息过载困扰的技术写作者&#xff0c;我每天要处理几十篇技术文档、研究论文和行业动态。最痛苦的不是获取信息&#xff0c;而是如何有效…...

别再拍脑袋定A/B测试样本量了!用Python/Excel/R三分钟算出靠谱结果

别再拍脑袋定A/B测试样本量了&#xff01;用Python/Excel/R三分钟算出靠谱结果 每次启动A/B测试前&#xff0c;团队总会陷入同样的争论&#xff1a;"这次实验需要多少流量才够&#xff1f;"产品经理凭经验说"10万用户应该够了"&#xff0c;运营同学翻出上次…...