“MyBatis中的动态SQL、模糊查询与结果映射“

news2024/11/22 19:34:28

目录

  • 引言
    • 1. MyBatis中的动态SQL
      • 1.1 if元素
      • 1.2 foreach标签
    • 2. MyBatis中的模糊查询三种形式
      • 2.1 #{} 模糊查询
      • 2.2 ${} 模糊查询
      • 2.3 concat() 模糊查询
      • 2.4 MyBatis中#与$的区别
    • 3. MyBatis中的结果映射
      • resultType与resultMap的区别
    • 总结

在这里插入图片描述

引言

MyBatis是一个强大而灵活的持久层框架,广泛应用于Java开发中。在使用MyBatis进行数据库操作时,动态SQL、模糊查询和结果映射是非常重要的功能。本文将深入探讨这些高级主题,并提供实例来帮助读者更好地理解和应用这些功能。

1. MyBatis中的动态SQL

动态SQL是MyBatis中非常强大和灵活的功能之一。它允许我们根据不同的条件生成不同的SQL语句,从而实现动态的数据库操作。在本节中,我们将介绍动态SQL的几个重要元素和用法。

1.1 if元素

if元素可以用于在SQL语句中添加条件判断。我们可以根据条件的真假来决定是否包含某个SQL片段。在本小节中,我们将学习如何使用if元素来实现动态SQL。

<select id="getUserList" parameterType="map" resultType="User">
  SELECT * FROM user
  <where>
    <if test="name != null">
      AND name = #{name}
    </if>
    <if test="age != null">
      AND age = #{age}
    </if>
  </where>
</select>

1.2 foreach标签

foreach标签可以用于遍历集合或数组,并将集合或数组中的元素作为SQL语句的参数。例如,我们可以根据用户选择的条件列表来动态生成查询语句,如下所示:

<select id="getUserList" parameterType="map" resultType="User">
 select
 <include refid="Base_Column_List" />
 from t_user 
 where uid in 
  <foreach collection="uids" item="uid" separator=",">
      #{uid}
    </foreach>
</select>

2. MyBatis中的模糊查询三种形式

模糊查询是在查询时使用通配符来匹配模糊的数据。在MyBatis中,我们可以使用LIKE关键字和通配符来实现模糊查询。本节将重点介绍MyBatis中的模糊查询的用法和技巧。

2.1 #{} 模糊查询

<select id="getUserList" parameterType="map" resultType="User">
 select
 <include refid="Base_Column_List" />
 from t_user 
 where uname like #{uname}
</select>

2.2 ${} 模糊查询

<select id="getUserList" parameterType="map" resultType="User">
 select
 <include refid="Base_Column_List" />
 from t_user 
 where uname like ${uname}
</select>

2.3 concat() 模糊查询

<select id="getUserList" parameterType="map" resultType="User">
 select
 <include refid="Base_Column_List" />
 from t_user 
 where uname like concat('%',#{bname},'%')
</select>

2.4 MyBatis中#与$的区别

  • 1.$是占位符传参,#是预处理SQL
  • 2.外在形式,$传参不带引号,#传参自带引号
  • 3.$传参存在SQL注入,#不存在 (sql注入比如说你传了个 ${uname} ,name 的值是’张三’,实际传输的是’张三’ or 1=1
  • 4.$可以用来做动态列,完成动态SQL开发

3. MyBatis中的结果映射

结果映射是将查询结果映射到Java对象中的过程。在MyBatis中,我们可以使用映射文件或注解来定义结果映射。本节将重点介绍MyBatis中的结果映射的用法和技巧。

resultType与resultMap的区别

  • 1.返回单表对应的实体类,仅有一个查询结果,可以用resultType与resultMap

  • 2.返回单表对应的实体类,有多个查询结果,可以用resultType与resultMap

  • 3.返回多表对应的结果,仅有一个结果,通常用resultType,也可以用resultMap

  • 4.返回多表对应的结果,有多个结果,通常用resultType,也可以用resultMap

  • 5.返回单个列段仅有一个结果,就用resultType

  • 6.返回单个列段,有多个查询结果,就用resultType

  • resultType:对应的类型

  • sesultMap:对应的是返回映射关系,指的是实体类与数据表字段的关系。
    通常而言,单表查询,返回单列,发挥多表查询结果,是用resultType.

  • 查询的结果,需要有关联属性的体现,用resultMAp

总结

本文深入探讨了MyBatis中的动态SQL、模糊查询和结果映射的使用方法和技巧。动态SQL允许我们根据不同的条件生成不同的SQL语句,提高了查询的灵活性。模糊查询则是在查询时使用通配符来匹配模糊的数据,增加了查询的准确性。结果映射则是将查询结果映射到Java对象中,方便我们进行数据操作和处理。
通过学习本文,读者可以更好地理解和应用MyBatis中的动态SQL、模糊查询和结果映射。希望本文对读者在使用MyBatis时有所帮助,并能够在实际项目中灵活运用这些高级功能。

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

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

相关文章

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

关于esp-aliyun的SDK编译常出错的问题1

下载完SDK后一般会将工程文件夹进行修改已适配自己的项目。这时问题就已经存在了。 如下图所示&#xff1a; 阿里云SDK里面的CMakeLists.txt里多处均调用了esp-aliyun这个文件夹。 还是老老实实的别修改esp-aliyun文件名了哈。

【数学建模】清风数模中正课4 拟合算法

拟合算法 在插值算法中&#xff0c;我们得到的曲线一定是要经过所有的函数点的&#xff1b;而用拟合所得到的曲线则不一样&#xff0c;拟合问题中&#xff0c;不需要得到的曲线一定经过给定的点。 拟合的目的是寻求一个函数曲线&#xff0c;使得该曲线在某种准则下与所有的数…

Java“牵手“拼多多商品详情数据、拼多多优惠券信息、拼多多到手价信息获取方法,拼多多API实现批量商品数据抓取示例

拼多多商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取拼多多商品详情数据&#xff0c;您可以通过开放平台的接口或者直接访问拼多多商城的网页来获取商品详情信息。以下是两种常用方法的介绍&#xff1a;…

vue3——递归组件的使用

该文章是在学习 小满vue3 课程的随堂记录示例均采用 <script setup>&#xff0c;且包含 typescript 的基础用法 一、使用场景 递归组件 的使用场景&#xff0c;如 无限级的菜单 &#xff0c;接下来就用菜单的例子来学习 二、具体使用 先把菜单的基础内容写出来再说 父…

Django实现音乐网站 ⑿

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是加载静态资源和推荐页-轮播图、推荐歌单功能开发。 目录 加载静态资源 引入jquery.js 引入bootstrap资源文件 创建基类模板样式文件 推荐页开发 轮播图开发 下载 加载swiper 自定义引入继承块设置 使用…

CW6B-90A-RCW6B-100A-RCW6B-110A-RCW6B-115A-R三相三线式滤波器

CW4B-10A-S CW4B-20A-S CW4B-30A-S三相三线式滤波器 CW6B-50A-S CW6B-60A-S CW6B-70A-S CW6B-80A-S CW6B-90A-S CW6B-100A-S CW6B-250A-S三相三线式滤波器 CW12B-3A-S(005) CW12B-6A-S(005) CW12B-10A-S(005) CW12B-20A-S(005 CW12B-30A-S(005) CW12B-40A-S(005)三…

代理池在过程中一直运行

Hey&#xff0c;爬虫达人们&#xff01;在爬虫的过程中&#xff0c;要保持代理池的稳定性可不容易。今天就来和大家分享一些实用经验&#xff0c;教你如何让代理池在爬虫过程中一直运行&#xff01;方法简单易行&#xff0c;让你的爬虫工作更顺畅. 在进行爬虫工作时&#xff0…

VisualStudio创建项目模板教程

简介 Visual Studio 项目模板是预先定义的项目结构和设置&#xff0c;可以帮助开发者快速启动新的项目。项目模板中可以包含预配置的文件、资源、设置和代码结构&#xff0c;这样开发者在创建新的项目时就不必从零开始。 以下是Visual Studio项目模板的一些核心点&#xff1a…

HD Supply EDI 到 JSON 方案简介

本文将介绍与HD Supply进行EDI对接&#xff0c;通过调用知行之桥的Admin API及JSON格式来集成业务系统。 准备下载和运行 HD Supply EDI 到 JSON 使用 JSON 生成一系列 EDI 文档与 HD Supply 通信。 下载工作流 下载示例文件 HD Supply EDI到JSON示例流具有预配置的端口…

二、3.中断

中断上半部和下半部是什么&#xff1f; 操作系统是中断驱动的&#xff0c;中断发生后会执行相应的中断处理程序&#xff0c;我们希望 CPU 中断响应的时间越短越好&#xff0c;这样便能响应更多设备的中断。但是中断处理程序还是需要完整执行的&#xff0c;不能光为了提高中断响…

数据结构(3)

线性表是多个具有相同特征的数据的有限序列。 前驱元素&#xff1a;A在B前面&#xff0c;称A为B的前驱元素。 后继元素&#xff1a;B在A后面&#xff0c;称B为A的后继元素。 线性表特征&#xff1a; 1.一个元素没有前驱元素&#xff0c;就是头结点&#xff1b; 2.最后一个…

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -@Autowried

&#x1f600;前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -Autowried &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&…

数据挖掘技术在智能外呼系统的应用探索

随着科技的不断发展&#xff0c;人们对于智能化的需求也日益增加&#xff0c;在企业获客领域&#xff0c;智能外呼系统应运而生。智能外呼系统是一种基于人工智能技术的客户服务系统&#xff0c;通过自动化的方式实现客户服务&#xff0c;提高客户满意度和企业效率。数据挖掘技…

wifi高通驱动之WCNSS_qcom_cfg.ini以及MCS、空间流数的学习和记录

一、WCNSS_qcom_cfg.ini 这个文件说是可以调优wifi的带宽&#xff0c;还有MIMO技术 Android Wi-Fi MIMO/SISO设置方法&#xff08;基于高通平台&#xff09;_广凯的博客-CSDN博客 不是太了解&#xff0c;先记录一下&#xff0c;个人感觉MCS和MIMO技术最全的应该是下面的网址…

Bigemap在地质工程勘察行业中的应用

Bigemap在地质工程勘察行业中的应用 选择Bigemap的原因&#xff1a; 师兄在测绘局工作&#xff0c;买过全能版&#xff0c;帮我下载过高程数据&#xff0c;我觉得效果可以&#xff0c;于是联系到软件公司进行试用、咨询 使用场景&#xff1a; 影像、等高线、地形等资料下载&…

买空气净化器怎么选 空气净化器哪个牌子性价比高

买空气净化器怎么选 空气净化器哪个牌子性价比高 空气净化器3个选购要点 空气净化器在如今的大气污染严重的环境下越来越受人们关注。然而&#xff0c;在市场上如此多的品牌和型号中&#xff0c;该如何选择一款适合自己的空气净化器呢&#xff1f;以下给出三个选购要点&#…

【校招VIP】网络基础之cookie、session和storage

考点介绍&#xff1a; cookie、session和localstorage 是目前常用的存储机制&#xff0c;不管是大厂还是中小公司&#xff0c;都会对这个问题有比较高的考察频度&#xff0c;而且有一定的深度和对比分析。 本期分享的网络基础之cookie、session和storage&#xff0c;分为试题、…

HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制LazyForEach数据懒加载

LazyForEach从提供的数据源中按需迭代数据&#xff0c;并在每次迭代过程中创建相应的组件。当LazyForEach在滚动容器中使用了&#xff0c;框架会根据滚动容器可视区域按需创建组件&#xff0c;当组件划出可视区域外时&#xff0c;框架会进行组件销毁回收以降低内存占用。一、接…

precision指标的average参数

同样适用于recall、F1 分类任务种类 先说一下分类任务分几种&#xff0c;分类任务主要分为二分类、多分类和多标签这三种。 现在假设我们有一个样本&#xff0c;叫s 二分类是最常见的&#xff0c;将s分给A或B这两类。 多分类是将s分给A或B或C或更多的类别。 多标签是有A、B、…