ssm之mybatis(动态sql)
来源:互联网 发布:宁波淘宝网店培训 编辑:程序博客网 时间:2024/06/09 20:21
mybatis动态SQL中的set标签的使用
set标记是mybatis提供的一个智能标记,我一般将其用在修改的sql中,例如以下情况:
<update>
update user
<set>
<if test="name != null and name.length()>0">name = #{name},</if>
<if test="gender != null and gender.length()>0">gender = #{gender},</if>
</set>
where id = #{id}
</update>
在上述的代码片段当中,假如说现在三个字段都有值得话,那么上面打印的SQL语句如下:
update user set name='xxx' , gender='xx' where id='x'
在上面标红的地方是没有逗号的,也就是说set标记已经自动帮助我们把最后一个逗号给去掉了
mybatis动态sql中的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:后缀
mybatis动态sql中where标签的使用
where标记的作用类似于动态sql中的set标记,他的作用主要是用来简化sql语句中where条件判断的书写的,如下所示:
<select id="selectByParams" parameterType="map" resultType="user">
select * from user
<where>
<if test="id != null ">id=#{id}</if>
<if test="name != null and name.length()>0" >and name=#{name}</if>
<if test="gender != null and gender.length()>0">and gender = #{gender}</if>
</where>
</select>
在上述SQL中加入ID的值为null的话,那么打印出来的SQL为:select * from user where name="xx" and gender="xx"
where 标记会自动将其后第一个条件的and或者是or给忽略掉
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 :后缀
separator :分隔符,表示迭代时每个元素之间以什么分隔
我们通常可以将之用到批量删除、添加等操作中。
- ssm之mybatis(动态sql)
- 【JAVA - SSM】之MyBatis动态SQL
- SSM框架之Mybatis动态sql配置
- ssm的mybatis的动态SQL语句
- mybatis之动态SQL
- MyBatis之动态SQL
- Mybatis之动态sql
- mybatis之动态SQL
- MyBatis之动态sql
- Mybatis之动态 SQL
- Mybatis之动态sql
- ssm框架学习---mybatis中动态sql中的sql片段
- (七)mybatis学习之动态SQL
- 浅谈MyBatis 之 动态SQL (三)
- (3)MyBatis之动态SQL
- ssm框架学习---mybatis中动态sql中的if片段
- ssm框架学习---mybatis中动态sql中的foreach片段
- MyBatis之动态SQL语句
- 代理模式 Prototype
- Codeforces Round #426 (Div. 2) B. The Festive Evening
- bzoj P4870 [Shoi2017]组合数问题
- 从Aop代理的对象中获取源对象
- FMX从TCustomXXX继承控件的子控件,无法同时显示的问题
- ssm之mybatis(动态sql)
- CSS背景的相关属性
- ios之第一个图形化界面
- Linux---lnmp之nginx
- python2和pyhton3区别
- Codeforces Round #426 (Div. 2) A B C
- DB2 学习笔记 ——数据库管理
- NOIP2016day2t2 蚯蚓
- Codeforces Round #426 (Div. 2)The Meaningless Game(思维+二分)