【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的层面执行我们的逻辑代码。
推荐阅读
- MySQL|IDEA连接mysql保姆级教学
- javaWeb|Javaweb菜单信息管理的一级菜单和二级菜单显示
- sql|Mybtais动态SQL详解
- mysql|mysql select语句详解_mysql select 语句实例详解
- mysql|mysql select语句详解_mysql学习笔记之完整的select语句用法实例详解
- tomcat|Tomcat 线程池和ThreadLocal的爱恨情仇
- java|大文件的分片上传、断点续传及其相关拓展实践
- 笔记|Kotlin与Java的‘爱恨情仇‘
- Ontology|本体开发日记07-我与java分词组件的爱恨情仇-JiebaSegmenter类