MyBatis动态SQL之 set 和 trim标记的使用示例
2016-04-13 18:34
656 查看
摘要: MyBatis动态SQL中 set 和 trim标记的例子
和之前的where一样,set和trim也是智能标记
在之前的user.xml中添加
再在测试代码的try中添加
运行,执行的SQL语句是 update User SET userName=?, password=? where id=?
set 自动识别并把sql语句中第二个逗号去掉的。此时数据库user表中id为10的username和password都被修改了。
//trim
trim标识为格式化标识,可以与其他标识完成where和set的功能
prefix 前缀增加 suffix 后缀增加 prefixOverrides 自动判断前置 suffixOverrides 自动判断后置
接着来测试一下,在user.xml中添加
与上面的set语句对比,prefix="SET" 是为SQL语句设置前缀,suffixOverrides是自动判断后缀 ","
suffix="WHERE id = #{id}" 是自动在加上后缀
在测试代码try中加入
运行,执行的SQL代码还是UPDATE User SET userName = ?, password=? WHERE id = ?
代替where的就是添加 prefix="where" prefixOverrides="and|or" trim就会自动的添加前缀where和自动识别和去掉不用的and或or
以上便是MyBatis动态SQL的set标记和trim标记,欢迎指出不足之处,互相交流,谢谢。
和之前的where一样,set和trim也是智能标记
在之前的user.xml中添加
<update id="updateUserSet" parameterType="User"> update User <set> <if test="userName != null">userName=#{userName},</if> <if test="password != null">password=#{password},</if> </set> where id=#{id} </update>
再在测试代码的try中添加
//动态SQL之set User oneUser=new User(); oneUser.setId(10); oneUser.setUserName("kobe10"); oneUser.setPassword("10kobe"); //set标记 session.update("updateUserSet",oneUser); session.commit();
运行,执行的SQL语句是 update User SET userName=?, password=? where id=?
set 自动识别并把sql语句中第二个逗号去掉的。此时数据库user表中id为10的username和password都被修改了。
//trim
trim标识为格式化标识,可以与其他标识完成where和set的功能
prefix 前缀增加 suffix 后缀增加 prefixOverrides 自动判断前置 suffixOverrides 自动判断后置
接着来测试一下,在user.xml中添加
<update id="updateUserTrim" parameterType="User"> UPDATE User <trim prefix="SET" suffixOverrides="," suffix="WHERE id = #{id}" > <if test="userName != null and userName != '' "> userName = #{userName}, </if> <if test="password != null and password != '' "> password=#{password}, </if> </trim>
与上面的set语句对比,prefix="SET" 是为SQL语句设置前缀,suffixOverrides是自动判断后缀 ","
suffix="WHERE id = #{id}" 是自动在加上后缀
在测试代码try中加入
User oneUser=new User(); oneUser.setId(10); oneUser.setUserName("kobe10"); oneUser.setPassword("10kobe"); //trim标记 session.update("updateUserTrim",oneUser); session.commit();
运行,执行的SQL代码还是UPDATE User SET userName = ?, password=? WHERE id = ?
代替where的就是添加 prefix="where" prefixOverrides="and|or" trim就会自动的添加前缀where和自动识别和去掉不用的and或or
以上便是MyBatis动态SQL的set标记和trim标记,欢迎指出不足之处,互相交流,谢谢。
相关文章推荐
- set 命令特殊用法
- You must SET PASSWORD before executing this statement的解决方法
- 批处理 Set 命令详解 让你理解set命令第1/2页
- ASP中set与dim的区别(自己的理解)
- 深入C#中get与set的详解
- sql Set IDENTITY_INSERT的用法
- C#探秘系列(三)――StackTrace,Trim
- mysql 强大的trim() 函数
- set_include_path在win和linux下的区别
- jQuery.trim() 函数及trim()用法详解
- JavaScript trim 去除字符串空格的三种方法(附代码详解)
- javascript的trim,ltrim,rtrim自定义函数
- jquery中常用的SET和GET
- 深入浅析mybatis oracle BLOB类型字段保存与读取
- MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
- 大家注意vector, list, set, map成员函数erase
- C#中Trim()、TrimStart()、TrimEnd()的用法介绍
- 基于SQL中SET与SELECT赋值的区别详解
- mysql之set与enum的介绍
- php set_magic_quotes_runtime() 函数过时解决方法