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>

posted @ 2020-08-04 22:14  一只小白的进修路  阅读(311)  评论(0)    收藏  举报