iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Mybatis中动态SQL,if,where,foreach怎么用
  • 272
分享到

Mybatis中动态SQL,if,where,foreach怎么用

mybatissql 2023-05-30 22:05:43 272人浏览 八月长安
摘要

这篇文章主要为大家展示了“mybatis中动态sql,if,where,foreach怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis中动态SQL,if,wher&#

这篇文章主要为大家展示了“mybatis中动态sql,if,where,foreach怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis中动态SQL,if,where,foreach怎么用”这篇文章吧。

MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。

MyBatis中用于实现动态SQL的元素主要有:

  • if

  • choose(when,otherwise)

  • trim

  • where

  • set

  • foreach

mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。

1、statement中直接定义使用动态SQL:

在statement中利用if 和 where 条件组合达到我们的需求,通过一个例子来说明:

原SQL语句:

<select id="findUserByUserQuveryVo" parameterType ="UserQueryVo" resultType="UserCustom"> select * from user where username = #{userCustom.username} and sex = #{userCustom.sex}</select>

现在需求是,如果返回值UserCustom为空或者UserCustom中的属性值为空的话(在这里就是userCustom.username或者userCustom.sex)为空的话我们怎么进行灵活的处理是程序不报异常。做法利用if和where判断进行SQL拼接。

<select id="findUserByUserQuveryVo" parameterType ="UserQueryVo" resultType="UserCustom"> select * from user<where> <if test="userCustom != null"> <if test="userCustom.username != null and userCustom.username != ''"><!-- 注意and不能大写 -->  and username = #{userCustom.username} </if> <if test="userCustom.sex != null and userCustom.sex != ''">  and sex = #{userCustom.sex} </if> </if></where></select>

有时候我们经常使用where 1=1这条语句来处理第一条拼接语句,我们可以使用< where > < where />来同样实现这一功能。

2、使用sql片段来处理statement

和我们写程序一样,有时候会出现一些重复的代码,我们可以用SQL片段来处理。在sql片段中需要注意的是它的位置,我们也可以引用其它mapper文件里面的片段,此时需要我们定义它的位置。

(1)、sql片段的定义

<sql id="query_user_where"> <if test="sex != null and sex != ''">  and sex = #{sex} </if> <if test="id != null">  and id = #{id} </if></sql>

(2)、sql片段的使用

<select id="findUserList" parameterType="User" resultType="User"> select * from user <where> <!-- 引用Sql片段 --> <include refid="query_user_where"></include> <!-- 在这里还要引用其它的sql片段 --> <!--  where 可以自动去掉条件中的第一个and --> <!-- <if test="sex != null and sex != ''">  and sex = #{sex} </if> <if test="id != null">  and id = #{id} </if> --> </where></select>

3、使用foreach进行sql语句拼接

在向sql传递数组或List,mybatis使用foreach解析,我们可以使用foreach中元素进行sql语句的拼接,请求数据。

通过一个例子来看:

需求:SELECT * FROM USER WHERE id=1 OR id=10 OR id=16

或者:SELECT * FROM USER WHERE id IN(1,10,16)

<if test="ids != null">  <foreach collection="ids" item="user_id" open="AND (" close=")" separator="or" > 每次遍历需要拼接的串  id= #{user_id} </foreach> </if>

其中,collection:指定输入对象中集合属性,item: 每个遍历生成对象,open:开始遍历时拼接串,close: 结束遍历是拼接的串,separator: 遍历的两个对象中需要拼接的串

<if test="ids != null">  <foreach collection="ids" item="user_id" open="and id IN(" close=")" separator=",">  id= #{user_id} </foreach></if>

以上是“Mybatis中动态SQL,if,where,foreach怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Mybatis中动态SQL,if,where,foreach怎么用

本文链接: https://www.lsjlt.com/news/221727.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis中动态SQL,if,where,foreach怎么用
    这篇文章主要为大家展示了“Mybatis中动态SQL,if,where,foreach怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis中动态SQL,if,wher&#...
    99+
    2023-05-30
    mybatis sql
  • Mybatis动态SQL之where标签用法说明
    目录关于where标签用法使用where标签及一些注意点where标签简单使用关于where标签用法 xml映射文件部分内容: <sel...
    99+
    2022-11-13
  • Mybatis中where标签与if标签怎么结合使用
    这篇文章主要介绍“Mybatis中where标签与if标签怎么结合使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis中where标签与if标签怎么结合使用”文章能帮...
    99+
    2023-07-05
  • MyBatis动态SQL怎么使用
    今天小编给大家分享一下MyBatis动态SQL怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。MyBatis 框架动态...
    99+
    2023-06-29
  • MyBatis中怎么实现动态SQL!
    这篇文章将为大家详细讲解有关MyBatis中怎么实现动态SQL!,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、if标签if是最常用标签,经常用在判断语句...
    99+
    2022-10-18
  • 怎么在MyBatis中使用动态SQL标签
    这篇文章将为大家详细讲解有关怎么在MyBatis中使用动态SQL标签,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.MyBatis动态SQLMyBatis 的强大特性之一便是它的动态 SQ...
    99+
    2023-06-14
  • Mybatis中xml的动态sql怎么实现
    这篇文章主要介绍“Mybatis中xml的动态sql怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis中xml的动态sql怎么实现”文章能帮助大家解决问题。动态SQL简介动态 SQ...
    99+
    2023-07-02
  • MyBatis动态SQL表达式怎么使用
    本篇内容介绍了“MyBatis动态SQL表达式怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!动态 sql 简单来讲就是我们能通过条件...
    99+
    2023-07-04
  • Mybatis的动态SQL语句怎么使用
    这篇文章主要介绍“Mybatis的动态SQL语句怎么使用”,在日常操作中,相信很多人在Mybatis的动态SQL语句怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis的动态SQL语句怎么使用...
    99+
    2023-06-30
  • 怎么在Mybatis中搭建动态SQL环境
    今天就跟大家聊聊有关怎么在Mybatis中搭建动态SQL环境,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. Mybatis–动态SQL动态 SQL 是 MyBatis 的强大特性...
    99+
    2023-06-14
  • mybatis中的动态sql问题怎么解决
    本篇内容主要讲解“mybatis中的动态sql问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mybatis中的动态sql问题怎么解决”吧!Mybatis框架的动态SQL技术是一种根据...
    99+
    2023-07-05
  • MyBatis中动态SQL及关联查询怎么实现
    小编给大家分享一下MyBatis中动态SQL及关联查询怎么实现,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!序言 MyBatis,大家都知道,半自动的ORM框架,原来叫ibatis,后来好...
    99+
    2022-10-19
  • Mybatis怎么使用ognl表达式实现动态sql
    这篇文章主要为大家展示了“Mybatis怎么使用ognl表达式实现动态sql”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis怎么使用ognl表达式实现动态sql”这篇文章吧。新建Us...
    99+
    2023-06-15
  • Mybatis动态SQL及单表多表查询怎么应用
    本文小编为大家详细介绍“Mybatis动态SQL及单表多表查询怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis动态SQL及单表多表查询怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。单...
    99+
    2023-07-02
  • Mybatis中的动态sql怎么利用OGNL表达式进行处理
    Mybatis中的动态sql怎么利用OGNL表达式进行处理?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。常用的Mybatis动态sql标签有6种:  &nb...
    99+
    2023-05-31
    mybatis ognl表达式 动态sql
  • MyBatis中动态sql实现传递多个参数并使用if进行参数的判断和实现like模糊搜索以及foreach实现in集合
    场景 在mapper接口层方法参数有id的数组和姓名的模糊搜索和类型的三个参数。 现在需要将这三个参数传递在动态sql的xml中接受并进行判断不为空。 然后查询数据库中记录在第一个参数id数组中的并且姓名是模糊搜索的并且类型是直接相等于的。...
    99+
    2020-04-27
    MyBatis中动态sql实现传递多个参数并使用if进行参数的判断和实现like模糊搜索以及foreach实现in集合 数据库入门 数据库基础教程 数据库 mysql
  • 怎么在mybatis中实现一个动态SQL和模糊查询功能
    这期内容当中小编将会给大家带来有关怎么在mybatis中实现一个动态SQL和模糊查询功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。新建表d_user:create table d_...
    99+
    2023-06-14
  • Mybatis中怎么利用 mapper实现动态代理
    Mybatis中怎么利用 mapper实现动态代理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言在开始动态代理的原理讲解以...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作