Mybatis 动态 SQL - script,bind,多数据库支持

2023-12-27 17:37:17
script

在使用注解的映射器类中使用动态SQL时,可以使用`<script>`元素。例如:

 @Update({"<script>",
      "update Author",
      "  <set>",
      "    <if test='username != null'>username=#{username},</if>",
      "    <if test='password != null'>password=#{password},</if>",
      "    <if test='email != null'>email=#{email},</if>",
      "    <if test='bio != null'>bio=#{bio}</if>",
      "  </set>",
      "where id=#{id}",
      "</script>"})
    void updateAuthorValues(Author author);
?bind

`<bind>`元素允许您将一个OGNL表达式的结果绑定到上下文中创建的变量上。例如:

<select id="selectBlogsLike" resultType="Blog">
  <bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
  SELECT * FROM BLOG
  WHERE title LIKE #{pattern}
</select>
?多数据库支持

如果配置了`databaseIdProvider`,则可以在动态代码中使用一个名为`_databaseId`的变量,以此来根据数据库供应商构建不同的语句。请看下面的示例:

<insert id="insert">
  <selectKey keyProperty="id" resultType="int" order="BEFORE">
    <if test="_databaseId == 'oracle'">
      select seq_users.nextval from dual
    </if>
    <if test="_databaseId == 'db2'">
      select nextval for seq_users from sysibm.sysdummy1"
    </if>
  </selectKey>
  insert into users values (#{id}, #{name})
</insert>

?

文章来源:https://blog.csdn.net/hay23455/article/details/135248132
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。