亚洲城教育-做无情怀、不忘本、有质量的IT职业教育机构

当前位置:首页  >  关于学院  >  技能论坛  >  正文

MyBatis之动态SQL语句

时间:2019-09-11 16:34     文章地址:亚洲城教育 作者:小锋
分享: 更多

  媒介

  咱们在进行名目斥地时,常常碰到需要按照不合的需求,对原有SQL语句的内容进行编削,本来这是一个比力头疼的问题,由于需要对原有SQL语句进行拼接、重组,费时费劲又一次容易犯错,本日咱们将进修MyBatis的动态SQL功能,能够处理这个问题。

  动态SQL语句简介

  动态SQL语句是MyBatis的一个很是强大的功能,答应咱们按照不合的需求,组合出不合的SQL语句,在select、update、insert、delete标签中都能够添加动态SQL语句。

  IF标签

  IF标签能够在前提建立时,在SQL语句中插入IF标签中的内容,不建立就不插入

  示例:

  <select id="selectUserByUser" parameterType="User" resultMap="userMap">

  select * from tb_user where

  <if test="realname != null">

  u_realname=#{realname}

  </if>

  <if test="gender != null">

  and u_gender=#{gender}

  </if>

  </select>

  上面代码中是按照User对象的各个属性进行查问,若是姓名不为空就插入姓名作为前提,若是性别不为空就插入性别作为前提。

  可是咱们会发觉若是姓名为空,性别不为空,SQL语句就会变成:select * from tb_user where and u_gender=#{gender}

  或者姓名、性别都为空就会变成:select * from tb_user where

  多么城市出现语法错误,多么咱们就需要下一个标签:where

  Where标签

  Where标签 用于拔擢where前提,会去掉多余的and或or,若是一个前提都不建立,会主动去掉sql中的where。

  代码改为:

  <select id="selectUserByUser" parameterType="User" resultMap="userMap">

  select * from tb_user

  <where>

  <if test="realname != null">

  u_realname=#{realname}

  </if>

  <if test="gender != null">

  and u_gender=#{gender}

  </if>

  <if test="age != null">

  and u_age=#{age}

  </if>

  </where>

  </select>

  多么就不会出现上面可能的错误了

  Trim标签

  上面where标签的功能,也能够使用trim标签完成,trim能去掉多余的前缀和后缀。

  语法:

  <trim prefix="前缀SQL" suffix="后缀" prefixOverrides="删除后面的符号" suffixOverrides="删除后面的符号">

  <if标签>

  </trim>

  示例:

  <trim prefix="where" prefixOverrides="and|or">

  ...

  </trim>

  Set标签

  用于拔擢update语句中的set部门,能够主动添加set环节字,删除多余的逗号

  示例:

  <update id="update" parameterType="User">

  update tb_user

  <set>

  <if test="name != null">

  u_name=#{name},

  </if>

  <if test="password != null">

  u_password=#{password},

  </if>

  </set>

  where u_id=#{id}

  </update>

  也能够使用trim完成:

  <trim prefix="set" suffixOverrides=",">

  <if test="name != null">

  u_name=#{name},

  </if>

  ...

  </trim>

  Foreach标签

  用于轮回遍历调集或数组的值,如:按多小我姓名查问

  select * from tb_user where u_realname in ('张三','李四'....)

  语法:

  <foreach collection="调集名" item="变量名" index="下标名" open="起头符号" close="结束符号" seperator="豆割符号">

  #{变量名}

  </foreach>

  留意:调集名在Mapper接口中需要使用@Param注释拔擢

  示例:

  <select id="selectUserByRealnames" resultMap="userMap">

  select * from tb_user where u_realname in

  <foreach collection="realnames" item="name" index="i" separator="," open="(" close=")">

  #{name}

  </foreach>

  </select>

  Choose标签

  Java中有if,也会有if-else、switch语句来判断多个前提,MyBatis也有Choose标签能够进行多前提判断

  示例:

  <select id="findActiveBlogLike"

  resultType="Blog">

  SELECT * FROM BLOG WHERE state = ‘ACTIVE’

  <choose>

  <when test="title != null">

  AND title like #

  </when>

  <when test="author != null">

  AND author_name like #{author}

  </when>

  <otherwise>

  AND featured = 1

  </otherwise>

  </choose>

  </select>

  这里从第一个when进行判断,若是建立就插入前提,结束choose标签,若是不建立再判断下一个when,若是所有when都不建立,就插入otherwise中的语句。

  总结

  动态SQL语句是MyBatis很是次要的特征,能够大概让咱们按照不合需求组合SQL语句,并且不容易犯错。动态SQL的标签有:if、where、set、choose、foreach等。控制好它们咱们能够写出愈加矫捷、高效的数据库操作代码。

相关文章

  • 北京总部地址:北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技能学院广场办事楼
    征询德律:400-811-9990
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、Linux云算计+收集平安培训、互联网营销培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 深圳校区地址:深圳市宝安区宝安大道5010号西部硅谷B座A区6层A605/B座C区1层108
    征询德律:0755-23015275/23015546-801/86660670
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、Linux云算计+收集平安培训、互联网营销培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 上海校区地址:上海市宝山区同济岔路199号聪慧七立方3号楼2-4层
    征询德律:400-811-9990 021-65233829-609
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、Linux云算计+收集平安培训、互联网营销培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 郑州二七区校区地址:郑州市二七区帆海中路60号海为科技园C区10层
    郑州高新区校区地址:郑州市高新区金梭路与银杏路交叉口教育科技财产园南门D座4层
    征询德律:0371-55191750/18610973027
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 广州校区地址:广州市河汉区元岗路200号慧通财产园B9三层
    征询德律:020-87088521
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 大连校区地址:辽宁省大连市高新园区爱贤街10号大连设想城A座901
    征询德律:400-811-9990
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 武汉金融港校区地址:武汉市东湖高新技能斥地区光谷大道77号金融港B18栋3楼
    武汉聪慧园校区地址:武汉市东湖高新技能斥地区光谷大道61号聪慧园21栋2楼
    征询德律:027-59313371
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 成都校区地址:成城市武侯区科华北路62号力宝大厦N(北楼)16楼
    征询德律:18628039301/18280029283/13028173481/18613201237
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
    征询德律:029-85363390
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 杭州旺田校区:浙江省杭州市江畔区九堡旺田书画城A座4层
    杭州龙驰校区:浙江省杭州市下沙经济技能斥地区元成路199号龙驰聪慧谷B座7层
    征询德律:400-811-9990 0571-86893632/0571-86094032
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 青岛校区地址:青岛市市北区龙城路杰出世纪核心3号楼8层801
    征询德律:0532-80911190
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 重庆校区地址:重庆市高新区科园一路2号大西洋国内12-1
    征询德律:400-811-9990 023-68883009
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
    征询德律:0731-85513210
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 哈尔滨校区地址:哈尔滨市松北区世泽路689号科技立异城4号楼11楼
    征询德律:400-811-9990/0451-87173191
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 南京校区地址:南京市建邺区应天大街780号弘辉财产园1栋2层
    征询德律:400-811-9990
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 太原校区地址:太原市小店区长治路230号动力互联网大厦6层
    征询德律:400-811-9990 16603513433
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 沈阳校区地址:辽宁省沈阳市浑南区世纪路16号东大软件园B园B1座A201
    征询德律:400-811-9990
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 合肥校区地址:合肥市包河区徽州大道396号东方广场B座12A
    征询德律:400-811-9990
    面讲课程:HTML5大前端培训、JavaEE+分布式斥地培训、Python全栈+人工智能培训、全链路UI/UE设想培训、云算计培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏斥地培训、Go言语斥地培训、PHP全栈+办事器集群培训、收集平安培训、互联网营销培训、好法式员
    认证课程:软考、Adobe认证、PMP认证、红帽RHCE认证
  • 亚洲城教育办事号

    领会亚洲城动态
    关怀亚洲城教育办事号

  • 亚洲城教育挪动站

    扫一扫快速进入
    亚洲城挪动端页面

  • 亚洲城互联办事号

    扫码匿名提建议
    直达CEO信箱