位置: IT常识 - 正文

mybatis常用标签(refid、foreach、trim)(mybatis isnotempty标签)

编辑:rootadmin
mybatis常用标签(refid、foreach、trim) 1.问题来源

推荐整理分享mybatis常用标签(refid、foreach、trim)(mybatis isnotempty标签),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mybatis常用标签有哪些,mybatis常用标签有哪些,mybatisforeach标签,mybatisforeach标签,mybatis常用的标签,mybatisbind标签,mybatiswhen标签,mybatiswhen标签,内容如对您有帮助,希望把文章链接给更多的朋友!

在之前查询数据库的时候基本都是使用

select * from student;SELECT name, prod_price FROM products;

但是很多时候我们并不需要查询数据库中的全部字段,直接查全部字段会降低效率,同时很多字段的组合是经常被使用到的,每次都单独写出来很麻烦

2.Mybatis解决 对于上述问题,Mybatis的映射文件中为我们引入了<include refid="Base_Column_List" /> ,意思就是固定几个需要查询的字段,在sql语句中不需要写具体的字段了。具体使用如下:

<sql id="Base_Column_List"> id, username, password, email, phone, question, answer, role, create_time, update_time</sql><select id="selectByUsername" parameterType="java.lang.String" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from mall_user where username = #{username,jdbcType=VARCHAR}</select>

2、mybatis动态sql中foreach标签的使用

foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代。如下:

<delete id="deleteBatch"> delete from user where id in<foreach collection="array" item="id" index="index" open="("  close=")" separator=","> #{id} </foreach></delete>

我们假如说参数为----  int[] ids = {1,2,3,4,5}  ----那么打印之后的SQL如下:

delete form user where id in (1,2,3,4,5)释义: collection:collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合,我在上面传的参数为数组,所以值为array

item :表示在迭代过程中每一个元素的别名

index:表示在迭代过程中每次迭代到的位置(下标)

open :前缀

close:后缀

mybatis常用标签(refid、foreach、trim)(mybatis isnotempty标签)

separator:分隔符,表示迭代时每个元素之间以什么分隔

我们通常可以将之用到批量删除、添加等操作中。

相当于mysql里的游标!!!

3、mybatis动态sql中的trim标签的使用

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

1、

select * from user<trim prefix="WHERE" prefix override="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" suffix override="," 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' #  whereid='x'

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

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

suffix:后缀

本文链接地址:https://www.jiuchutong.com/zhishi/299686.html 转载请保留说明!

上一篇:【Android源码面试宝典】MMKV从使用到原理分析(二)(android界面源码)

下一篇:html+css+js制作LOL官网,web前端大作业(3个页面+模拟登录+链接)(js怎么制作)

  • spring 面试题(spring面试题2021)

  • 小爱同学恢复出厂按哪个键(小爱同学恢复出厂设置怎么重新配对)

  • vivos12后盖材质(vivos5手机后盖是什么材质)

  • 华为荣耀play3语音助手如何唤醒(华为荣耀play3语音助手能用语音唤醒嘛)

  • 全民k歌听不到自己唱(全民K歌听不到伴奏)

  • edge支持es6吗(edge es6)

  • 苹果手机引导式访问密码忘了怎么办(苹果手机引导式访问没反应)

  • 为什么电脑上没有压缩这一功能(为什么电脑上没有word文档)

  • 苹果xr人脸识别不灵怎么办(苹果xr人脸识别突然用不了)

  • 电脑睡眠还会继续下载吗(电脑睡眠还会继续渲染吗)

  • 微信点别人头像会震动(微信点别人头像两下他会抖)

  • 动态随机存储器使用的是什么表示存储信息(动态随机存储器和静态随机存储器)

  • 华为mate30要贴膜吗(华为mate30贴膜后无法截屏)

  • gw格式文件怎么打开(gw格式怎么转换成pdf)

  • 华为商城付款方式有几种(华为商城付款方式在哪设置)

  • 华为屏幕出现绿色方框(华为屏幕出现绿光怎么解决)

  • vivo支不支持快充(vivo支持快充的有哪些)

  • 2345看图王是什么软件(2345看图王是干啥的)

  • 美团卷码是什么意思啊(美团中的卷码什么意思)

  • 企业qq怎么群发消息(企业qq怎么发送文件)

  • 快手如何快速涨粉(快手如何快速涨粉?不花钱)

  • iphone8系统占用20g怎样清理(iphone8系统占用20多g怎么清理)

  • 网易考拉如何退货(网易考拉会员怎么退会员)

  • win11怎么静音? windows11关闭系统声音的技巧(win11怎么设置声音)

  • 解决JSON.parse转化不规范json字符串的问题(json转pojo)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络