mybatis动态SQL
测试SQL语句
CREATE TABLE `blog`(
`id` VARCHAR(50) NOT NULL COMMENT '博客id',
`title` VARCHAR(100) NOT NULL COMMENT '博客标题',
`author` VARCHAR(30) NOT NULL COMMENT '博客作者',
`create_time` DATETIME NOT NULL COMMENT '创建时间',
`views` INT(30) NOT NULL COMMENT '浏览量'
)ENGINE=INNODB DEFAULT CHARSET=utf8
添加数据如下
动态操作之if
if用于拼接条件,test中的条件针对的是java语句中的参数,而非数据库中的列
动态操作之where
只有当where标签中的子元素返回内容是才会添加where语句(可以不用写where 1=1 了)
第一个if标签中可以写and或者or
动态操作之choose
类似于java中的switch
动态操作之set
有选择的更新内容
trim
代码复用
<!--在sql中设定的代码,可以通过include标签通过id获得-->
<sql id="XX">
...
</sql>
<include refid="XX"></include>
Foreach
<!--
collection表示集合
item表示集合中的对象
index表示当前对象的数字索引
open表示拼接的开端
separator表示拼接的间隔字符
close表示拼接的末尾
-->
<!--
例子:
集合:["JAVA","C++","RUST","HTML"]
open 为: "and ("
close 为: ")"
separator为: "or"
拼接结果为
and ("JAVA" or "C++" or "RUST" or "HTML")
-->
<select id="foreachBlog" resultType="Blog" parameterType="map">
SELECT * FROM blog
<where>
<foreach item="id" index="index" collection="list" open="and (" separator="or" close=")">
id = #{id}
</foreach>
</where>
</select>