select * from blog where。mysql|动态sql的标签语言。" />

mysql|动态sql的标签语言

【mysql|动态sql的标签语言】if语句的使用 使得在mapper.xml文件里的sql语句得到极大的复用 因此这一过程也是动态的。

id="queryBlog" parameterType="map" resultType="com.pojo.Blog"> select * from blog where 1=1 andtitle=#{title} and author=#{author}

和jstl标签类似(之后的when otherwise forEach等等) 因此MyBatis的动态sql标签语言在学习上会显得容易
对以上的动态sql语句的修改——在title为空之后拼接的sql语句是where and ... 这是sql上的语法错误 修改——套上``:

id="queryBlog" parameterType="map" resultType="com.pojo.Blog"> select * from blog title=#{title} and author=#{author}

包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉该内容。
List queryBlog(Map map);

利用map映射的方法实现。
标签和在使用的时候 作用一致 会根据需要删除某些逗号或者其他符号 为使整个sql语句的正确性。
以下是针对 某一张表的更新语句:
同样是在mapper接口处 创建方法
利用注解@Test 完成简单测试
update Blog > author=#{author} id=#{id};

或者,你可以通过使用trim元素来达到同样的效果:
...

注意,我们覆盖了后缀值设置,并且自定义了前缀值。
trim其实在一开始对于Java的学习就接触过,trim意为除去。
标签里所含的 prefix和jstl的taglib指令是一致的作用 用于标记
这一整体的trim标签的寓意为 前缀prefix 谁覆盖原有语句中的后缀(suffix)那个,就是一个除去替换的过程。
...

where替换前缀AND |OR
这里涉及的删除一方面是方便 二则是在提醒要注意sql语句的正确性 比如update 其set之后的各个要用逗号隔开。
在一开始的动态sql的学习就提到过 它的出现使得sql语句能够复用 提高效率 那么 choose、when、otherwise的例子能更好的解释这一点。示例:
id="querybywant" parameterType="map" > select * from Blog title=#{title} author=#{author} views=#{views}

类似 if else
动态sql本质还是sql语句只是在sql的层面执行我们的逻辑代码。

    推荐阅读