Mybatis 常用标签

MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。

1、<if>

主要用于sql语句拼接(很简单)如示例

2、<choose,when,otherwise>

有些时候,我们不想用到所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。

结构如下:

<choose>

<when test=" ** ">

<when>

<otherwise>

</otherwise>

</choose>

3<where,set>

<update id="updateAuthorIfNecessary">
  update Author
    set
      <if test="username != null">username=#{username},</if>
      <if test="password != null">password=#{password},</if>
      <if test="email != null">email=#{email},</if>
      <if test="bio != null">bio=#{bio}</if>
  where id=#{id}
</update>

当我们这样写sql时会出现以下问题

如果这些条件没有一个能匹配上将会怎样?最终这条 SQL 会变成这样:

 update Author
    set

username=#{username},password=#{password},
where id=#{id}
会报错解决方法有2中1.加<where ,set>标签2.<trim>标签

4、<trim>标签

trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码:

  1、

 

 select * from user 

  <trim prefix="WHERE" prefixoverride="AND |OR">

    <if test="name != null and name.length()>0"> AND name=#{name}</if>

    <if test="gender != null and gender.length()>0"> AND gender=#{gender}</if>

  </trim>

  假如说name和gender的值都不为null的话打印的SQL为:select * from user where    name = ‘xx‘ and gender = ‘xx‘

  在红色标记的地方是不存在第一个and的,上面两个属性的意思如下:

  prefix:前缀      

  prefixoverride:去掉第一个and或者是or

  2、

  

update user

  <trim prefix="set" suffixoverride="," suffix=" where id = #{id} ">

    <if test="name != null and name.length()>0"> name=#{name} , </if>

    <if test="gender != null and gender.length()>0"> gender=#{gender} ,  </if>

  </trim>

  假如说name和gender的值都不为null的话打印的SQL为:update user set name=‘xx‘ , gender=‘xx‘     where id=‘x‘

  在红色标记的地方不存在逗号,而且自动加了一个set前缀和where后缀,上面三个属性的意义如下,其中prefix意义如上:

  suffixoverride:去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)

  suffix:后缀

5、<foreach>

动态 SQL 的另外一个常用的必要操作是需要对一个集合进行遍历,通常是在构建 IN 条件语句的时候

foreach 元素的功能是非常强大的,它允许你指定一个集合,声明可以用在元素体内的集合项和索引变量。它也允许你指定开闭匹配的字符串以及在迭代中间放置分隔符。这个元素是很智能的,因此它不会偶然地附加多余的分隔符。

注意 你可以将任何可迭代对象(如列表、集合等)和任何的字典或者数组对象传递给foreach作为集合参数。当使用可迭代对象或者数组时,index是当前迭代的次数,item的值是本次迭代获取的元素。当使用字典(或者Map.Entry对象的集合)时,index是键,item是值。


 

原文地址:https://www.cnblogs.com/potentPrince/p/8406094.html

时间: 2024-08-14 09:57:21

Mybatis 常用标签的相关文章

mybatis常用标签

定义sql语句:insert.delete.update.select 例子: <select id="userList" parameterType="user" resultType="User"> select * from user where name =#{name} </select> 配置java对象属性与查询结果集中列名的对应关系:resultMap 例子: <resultMap id="

[刘阳Java]_MyBatis_映射文件的常用标签总结_第5讲

MyBatis中常用标签的总结,简单给出自己的总结 MyBatis映射文件中的标签使用介绍1.<select>:用于编写查询语句用的标签 id:表示当前<select>标签的唯一标识 parameterType:指定查询限制条件的输入类型,一般使用#{}实现的是向prepareStatement中的预处理语句中设置参数值 resultType:指定查询返回结果的输出类型,如果返回的结果是一个实体类,必须要求实体类的属性和表的字段名称相同 resultMap:也是一个输出类型,配合&

MyBatis 常用写法

MyBatis 常用写法 1.forEach 循环 ??forEach 元素的属性主要有 item, idnex, collection, open, separator, close. collection:传入的 List 或 Array 或自己封装的 Map. item:集合中元素迭代时的别名. idnex:集合中元素迭代是的索引. open:where 后面表示以什么开始,如以'('开始. separator:表示在每次进行迭代是的分隔符. close:where后面表示以什么结束,如以

第2天:HTML常用标签

今天学完主要对所学知识点进行了整理. 一.超链接ahref:www.baidu.com(跳转页面):id名(锚点跳到相应div位置):01.rar(压缩包) target:_blank(新窗口打开):_self(当前窗口打开)二.文件路径绝对路径:(1)线上:线上绝对路径(2)线下:完整路径 相对路径:src=../img/bg.jpg(../是上一级目录) 三.HTML常用标签section :版块 用于划分页面上的不同区域,或者划分文章里不同的节 header :页面头部或者版块(secti

dede 首页的常用标签

dede 首页的常用标签!1.织梦标签学习方法1)不要深究织梦的标签是织梦的开发者提供给我们的,我们只要使用就好了,不要深究,这超出我们学习使用织梦的范畴了,我们本课程不是搞二次开发!2)复制很重要使用dede 不要去背那些提供给我们的标签,我们只要会复制粘贴,对某个标签有疑问直接粘贴到模板里看看能得到什么结果就可以了!2.标签分类1)单标签{dede:标签名属性="值" ..../}{dede:include filename="head.htm"/}2)双标签{

bootstrap_03_常用标签

<!doctype html> <html> <meta charset="utf-8" /> <head> <title>益司CMS-PC与手机建站集成</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no

HTML 常用标签

HTML常用标签 HTML的结构 <html> <head></head> <body></body> </html> Body标记的属性 <body 属性="属性值"> Background:给网页设置背景图片 bgColor:给网页设置背景颜色 文本与字体修饰标记 <b></b>或者<strong></strong> 给字体加粗 <i>&l

Jsp开发常用标签总结

Jsp开发常用标签总结 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp). 用JSP开发的Web应用是跨平台的,

HTML基础—一般标签、常用标签和表格的应用

<html>    --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body> 页面显示的内容 </body> </html>    --结束标签 <!--注释内容--> 注释 body的属性: bgcolor                 页面背景色 text                    文字颜色(规定所有文本颜色) topmar