MyBatis 动态拼接Sql字符串的问题

网友投稿 344 2023-07-09


MyBatis 动态拼接Sql字符串的问题

MyBatis 的一个强大的特性之一通常是它的动态 SQL 能力。如果你有使用 JDBC 或其他 相似框架的经验,你就明白条件地串联 SQL 字符串在一起是多么的痛苦,确保不能忘了空格或在列表的最后省略逗号。动态 SQL 可以彻底处理这种痛苦。

动态SQL

MyBatis的动态SQL,解决了SQL字符串拼接的痛苦。

1.if

parameterType="Blog" resultType="Blog">

SELECT * FROM BLOG

WHERE state = 'ACTIVE'

AND title like #{title}

这条一句会提供一个可选的文本查找功能。如果没有传递title,那么所有激活的博客都会被返回。

如果传递了title,那么就会查找相近的title。

2.choose,when,otherwise

parameterType="BLOG" resultType="BLOG">

SELECT * FROM BLOG

WHERE

AND title like #{title}

AND title like #{author.name}

AND featured = 1

注:如果上述条件都没有匹配,则会变成SELECT * FROM BLOG WHERE

如果仅有第二个匹配,则会变成SELECT * FROM BLOG WHERE AND title LIKE somelike

显然这样会查询失败。要解决这个问题,mybatis提供了解决方法。

parameterType="BLOG" resultType="BLOG">

SELECT * PDHpJkGSFROM BLOG

WHERE

AND title like #{title}

AND title like #{author.name}

AND featured = 1

AND title like #{title}

AND title like #{author.name}

AND featured = 1

overrides属性采用管道文本分隔符来覆盖,这里的空白是重要的。它的结果就是移除在InnerText中overrides中指定的内容。

3.set

parameterType="Author">

update Author

username=#{username},

password=#{password},

email=#{email}

where id=#{id}

parameterType="Author">

update Author

username=#{username},

password=#{password},

email=#{email}

where id=#{id}

同上的问题,优化后:

parameterType="Author">

update Author

username=#{username},

password=#{password},

email=#{email}

where id=#{id}

parameterType="Author">

update Author

username=#{username},

password=#{password},

email=#{email}

where id=#{id}

以上所述是给大家介绍的MyBatis 动态拼接Sql字符串的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
下一篇:基于Java中字符串内存位置详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~