Mybatis内容整理(四)动态SQL、缓存
一、动态SQL概述:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句.官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。 动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。 ------------------------------- - if - choose (when, otherwise) - trim (where, set) - foreach -------------------------------我们之前写的 SQL 语句都比较简单,如果有比较复杂的业务,我们需要写复杂的 SQL 语句,往往需要拼接,而拼接 SQL ,稍微不注意,由于引号,空格等缺失可能都会导致错误。那么怎么去解决这个问题呢?这就要使用 mybatis 动态SQL,通过 if, choose, when, otherwise, trim, where, set, foreach等标签,可组合成非常灵活的SQL语句,从而在提高 SQL 语句的准确性的同时,也大大提高了开发人员的效率。搭建环境新建一个数据库表:blog字段:id,title,author,create_time,viewsCREATETABLE`blog`(`id`varchar(50)NOTNULLCOMMENT'博客id',`title`varchar(100)NOTNULLCOMMENT'博客标题',`author`varchar(30)NOTNULLCOMMENT'博客作者',`create_time`datetimeNOTNULLCOMMENT'创建时间',`views`int(30)NOTNULLCOMMENT'浏览量')ENGINE=InnoDBDEFAULTCHARSET=utf81、创建Mybatis基础工程2、IDutil工具类publicclassIDUtil{publicstaticStringgenId(){returnUUID.randomUUID().toString().replaceAll("-","");}}3、实体类编写 【注意set方法作用】importjava.util.Date;publicclassBlog{privateStringid;privateStringtitle;privateStringauthor;privateDatecreateTime;privateintviews;//set,get....}4、编写Mapper接口及xml文件publicinterfaceBlogMapper{}?xml version="1.0"encoding="UTF-8"?!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"mapper namespace="com.sj.mapper.BlogMapper"/mapper5、mybatis核心配置文件,下划线驼峰自动转换settingssettingname="mapUnderscoreToCamelCase"value="true"/settingname="logImpl"value="STDOUT_LOGGING"//settings!--注册Mapper.xml--mappersmapperresource="mapper/BlogMapper.xml"//mappers6、插入初始数据编写接口//新增一个博客intaddBlog(Blogblog);sql配置文件insertid="addBlog"parameterType="blog"insert into blog (id, title, author, create_time, views) values (#{id},#{title},#{author},#{createTime},#{views});/insert初始化博客方法@TestpublicvoidaddInitBlog(){SqlSessionsession=MybatisUtils.getSession();BlogMappermapper=session.getMapper(BlogMapper.class);Blogblog=newBlog();blog.setId(IDUtil.genId());blog.setTitle("Mybatis如此简单");blog.setAuthor("sj");blog.setCreateTime(newDate());blog.setViews(9999);mapper.addBlog(blog);blog.setId(IDUtil.genId());blog.setTitle("Java如此简单");mapper.addBlog(blog);blog.setId(IDUtil.genId());blog.setTitle("Spring如此简单");mapper.addBlog(blog);blog.setId(IDUtil.genId());blog.setTitle("微服务如此简单");mapper.addBlog(blog);session.close();}初始化数据完毕!if 语句需求:根据作者名字和博客名字来查询博客!如果作者名字为空,那么只根据博客名字查询,反之,则根据作者名来查询1、编写接口类//需求1ListBlog

相关新闻

蓝牙AVRCP从连接到控制信令的交互详解,以及绝对音量介绍

蓝牙AVRCP从连接到控制信令的交互详解,以及绝对音量介绍

1.基本概念A2DP(Advanced Audio Distribution Profile)是蓝牙的音频传输协议,AVDTP负责传输数据,AVRCP(AUDIO/VIDEO REMOTE CONTROL PROFILE)则是蓝牙音乐控制协议AVCTP协议描述了蓝牙设备间Audio/Video的控制信号交换的格式和机制&#xff0…

2026/8/6 17:37:33 阅读更多 →
温州网站建设公司如何选择靠谱服务?揭秘低成本高质量建站背后的真相与避坑指南

温州网站建设公司如何选择靠谱服务?揭秘低成本高质量建站背后的真相与避坑指南

在温州这片充满商业活力的土地上,每一家想要在互联网浪潮中立足的企业,都不得不面对一个至关重要的问题:如何搭建一个既美观又实用的官方网站?很多老板一提到建站,脑子里蹦出来的第一个词往往是“价格”。他们问:“建个网站要多少钱?”、“能不能便宜点?”、“隔壁某某…

2026/8/6 17:36:33 阅读更多 →
PyTorch 深度学习实战应用指南:从原型搭建到工业落地的十大核心能力

PyTorch 深度学习实战应用指南:从原型搭建到工业落地的十大核心能力

本专栏为 CSDN 付费深度连载内容,系统覆盖深度学习项目从算法选型、模型训练、性能调优到生产部署的全链路工程能力,每讲均配套原理拆解、逐行代码解析与工业级避坑指南。 专栏开篇:从 Demo 到工业落地,深度学习工程师的能力跃迁 …

2026/8/6 17:36:33 阅读更多 →

最新新闻

PPWR 2026年8月全面适用:EN 15343追溯链为什么现在就要搭?

PPWR 2026年8月全面适用:EN 15343追溯链为什么现在就要搭?

01 宁波做食品PP盒的张总,在客户审核里栽了跟头张总的工厂给欧洲连锁超市供PP保鲜盒四年。上个月,一家德国Tier 1采购来做年度供应商审核,没扣货、没罚款,但在报告里写了一条:“回收料声明缺乏基于EN 15343的全流程追溯…

2026/8/6 18:30:57 阅读更多 →
TVBOX接口2026年8月重新整理

TVBOX接口2026年8月重新整理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1、TVBOX在使用中的问题2、TVBOX配置接口整理3、获取接口4、关注我1、TVBOX在使用中的问题 先看以下代码 "parses": [{"name": "聚合&quo…

2026/8/6 18:30:57 阅读更多 →
浏览器3D编辑革命:SuperSplat如何重塑你的3D高斯斑点工作流

浏览器3D编辑革命:SuperSplat如何重塑你的3D高斯斑点工作流

浏览器3D编辑革命:SuperSplat如何重塑你的3D高斯斑点工作流 【免费下载链接】super-splat 3D Gaussian Splat Editor 项目地址: https://gitcode.com/gh_mirrors/su/super-splat 在当今数字创作领域,3D高斯斑点编辑正成为点云处理和可视化的重要技…

2026/8/6 18:30:57 阅读更多 →
3步解决群晖硬盘兼容性问题:让第三方硬盘完美运行

3步解决群晖硬盘兼容性问题:让第三方硬盘完美运行

3步解决群晖硬盘兼容性问题:让第三方硬盘完美运行 【免费下载链接】Synology_HDD_db Add your HDD, SSD and NVMe drives to your Synologys compatible drive database and a lot more 项目地址: https://gitcode.com/GitHub_Trending/sy/Synology_HDD_db 你…

2026/8/6 18:30:57 阅读更多 →
笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像

笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像

啥都别说,先打开docker desktop: 关闭 Docker Desktop 的 "containerd image store"(最关键一步) Docker Desktop 在近期版本中将 "Use containerd for storing and pulling images"(使用 containerd 存储和拉取镜像)默认开启了。这个新特性在处理多…

2026/8/6 18:30:57 阅读更多 →
ppInk:Windows平台上最强大的免费屏幕标注软件终极指南

ppInk:Windows平台上最强大的免费屏幕标注软件终极指南

ppInk:Windows平台上最强大的免费屏幕标注软件终极指南 【免费下载链接】ppInk Fork from Gink 项目地址: https://gitcode.com/gh_mirrors/pp/ppInk 你是否经常需要在屏幕演示、在线教学或远程协作中进行实时标注?是否厌倦了复杂的绘图工具和繁琐…

2026/8/6 18:29:57 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →