剩余的标签,可能会用到,也可能会为你的系统提供更多的便捷和灵活性,但是用的不是很多。
<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 元素。比如:
"<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层面。选择团队成员能看的懂得,简洁的,实现业务需求的,性能良好的方案去实现。如果需要,可以使用这块的技巧去增砖添瓦。