可能会用到的Mybatis标签介绍(八)

简介: 可能会用到的Mybatis标签介绍(八)

剩余的标签,可能会用到,也可能会为你的系统提供更多的便捷和灵活性,但是用的不是很多。

<trim>

<trim>标签是一个很有用的标签,它用于根据条件动态地生成SQL语句的片段,可以帮助我们编写更加灵活和简洁的SQL语句。<trim>标签通常用于处理WHERE子句或SET子句中的条件拼接。

 

下面是<trim>标签的基本语法:

<trim prefix="" prefixOverrides="" suffix="" suffixOverrides="">

   <!-- SQL 片段 -->

</trim>

prefix:在<trim>标签生成的SQL片段前添加的字符串,常用于添加WHERE或SET关键字。

prefixOverrides:指定需要从生成的SQL片段中删除的前缀部分,可以用于删除多余的AND或OR。

suffix:在<trim>标签生成的SQL片段后添加的字符串,常用于添加额外的SQL关键字。

suffixOverrides:指定需要从生成的SQL片段中删除的后缀部分,可以用于删除多余的逗号或其他符号。

下面是一个示例,演示如何使用<trim>标签来动态生成WHERE子句:

<!-- UserMapper.xml --><mappernamespace="UserMapper"><selectid="getUserList"resultType="package.User">        SELECT *
        FROM users
<trimprefix="WHERE"prefixOverrides="AND | OR"><iftest="username != null and username != ''">                AND username = #{username}
</if><iftest="email != null and email != ''">                AND email = #{email}
</if></trim></select></mapper>

在上面的例子中,如果传入的username和email都不为空,那么生成的SQL语句将包含WHERE子句以及对应的条件。同时,通过prefixOverrides属性,可以动态删除前面多余的AND或OR,以保证生成的SQL语句的正确性。

使用<trim>标签能够帮助我们更好地处理复杂的SQL拼接情况,提高SQL语句的可读性和可维护性。除了用于WHERE子句,<trim>标签还可以用于SET子句或其他需要动态生成SQL片段的情况。


<script>

<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>"})
voidupdateAuthorValues(Authorauthor);


<bind>

<bind>元素允许你在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文。比如:

<selectid="selectBlogsLike"resultType="Blog"><bindname="pattern"value="'%' + _parameter.getTitle() + '%'"/>  SELECT * FROM BLOG
  WHERE title LIKE #{pattern}
</select>

其他的为数不多的内容请参考 https://mybatis.org/mybatis-3/zh/dynamic-sql.html 动态SQL介绍。个人认为,不要做太复杂的技巧,更不要把太多的操作放到sql层面。选择团队成员能看的懂得,简洁的,实现业务需求的,性能良好的方案去实现。如果需要,可以使用这块的技巧去增砖添瓦。

目录
相关文章
|
Java 数据库连接 mybatis
mybatis的set标签
mybatis的set标签
|
7月前
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
873 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
7月前
|
SQL XML Java
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
62 0
|
SQL Java 数据库连接
mybatis的trim标签insert标签update标签
mybatis的trim标签insert标签update标签
|
3月前
|
SQL XML Java
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
|
3月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
2月前
|
SQL XML Java
Mybatis的<where>,<if>等标签用法
这篇文章详细解释了Mybatis中<where>和<if>等标签的用法,展示了如何在SQL动态构建中有效地过滤条件和处理逻辑分支。
254 1
|
2月前
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
52 0
Mybatis入门(select标签)
|
2月前
|
SQL Java 数据库连接
Mybatis的<insert>,<update>,<delete>标签用法
这篇文章详细讲解了Mybatis中<insert>, <update>, <delete>标签的使用方法,并提供了示例代码来展示如何执行数据库的增删改操作。
107 0
|
Java 数据库连接 mybatis
mybatis的choose,when,otherwize标签
mybatis的choose,when,otherwize标签