Mybatis4 之Mybatis动态sql的实现代码


当前第2页 返回上一页

用于维护update语句中的set子句, 特点是可以删除多余的逗号

<update id="upd">
 update
 tb_user
 <set>
 <if test="username != null and username != ''">
  username=#{username},
 </if>
 <if test="age != null">
  age=#{age}
 </if>
 </set>
 where
 id=#{id}
</update>

7.<foreach>

遍历集合(数组, List, Set, Map), 通常用于in操作或批量新增. 属性简介:

a)collection: 要遍历的集合

b)item: 迭代项

c)open: 以什么字符开头

d)close: 以什么字符结束

e)separator: 多个迭代项之间的分隔符

<delete id="delBatch">
 delete from tb_user
 <where>
 id in
 <foreach collection="ids" item="id" open="(" close=")" separator=",">
  #{id}
 </foreach>
 </where>
</delete>

8.<trim>

在语句的前后进行追加和去除指定的字符.

<insert id="insBatch">
 insert into tb_user values
 <foreach collection="users" item="user" separator=",">
 <trim prefix="(" prefixOverrides="," suffix=")" suffixOverrides=",">
  ,default, #{user.username}, #{user.password}, #{user.realname}, #{user.age}, #{user.birthday}, now(),
 </trim>
 </foreach>
</insert>

知识点补充:静态sql与动态sql有什么区别

SQL 语句从编译和运行的角度可以分为两种,静态 SQL和 动态 SQL,这两种 SQL 在使用方式、运行机制和性能表现等方面各有特点 :

静态 SQL:静态 SQL 语句一般用于嵌入式 SQL 应用中,在程序运行前,SQL 语句必须是确定的,例如 SQL 语句中涉及的列名和表名必须是存在的。静态 SQL 语句的编译是在应用程序运行前进行的,编译的结果会存储在数据库内部。而后程序运行时,数据库将直接执行编译好的 SQL 语句,降低运行时的开销。

动态 SQL:动态 SQL 语句是在应用程序运行时被编译和执行的,例如,使用 DB2 的交互式工具 CLP 访问数据库时,用户输入的 SQL 语句是不确定的,因此 SQL 语句只能被动态地编译。动态 SQL 的应用较多,常见的 CLI 和 JDBC 应用程序都使用动态 SQL。

静态sql:语句类型在编程时候必须是确定好的。比如

select * from employee where empno='abc'
select * from employee where empno='12'

都必须是确定的,唯一可以变化的是abc的值。

动态sql:语句类型可以在运行期间指定,比如clp就是最典型的动态sql程序,你可以输入任何命令。

静态sql的存取路径是在运行前就确定好的,而动态sql的存取路径是在运行时动态生成的。因此生成的存取计划相对更优,但考虑到生成存取路径的开销,有可能应用程序的运行时间相对会比静态sql长些。

总结

到此这篇关于Mybatis4 之Mybatis动态sql的实现代码的文章就介绍到这了,更多相关mybatis动态sql内容请搜索


标签:SQL

返回前面的内容

相关阅读 >>

mysqlsqlserver的比较

详解sqlserver和oracle的分页查询

分析mongodb和mysql各自的关键特性、差别和优势

sql中case when的用法

探讨如何计算age的sql函数

关于查询mysql字段注释的5种方法总结

hive-sqlsql的区别是什么?

sql注入与防止及mybatis基本作用

mssql批量插入数据优化详细

如何写优雅的sql原生语句

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...