动态SQL常用标签
2022/1/27 2:04:18
本文主要是介绍动态SQL常用标签,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 where标签
1.1若满足条件的首条sql语句前面没有‘and’或者‘or’,Mybatis会自动拼接sql语句,如果满足条件的首条sql语句前面有‘and’或者‘or’,Mybatis会自动的去掉‘and’或者‘or’
<select id="getBlogIF" parameterType="map" resultType="blog"> select * from blog <where> <if test="title != null"> title=#{title} </if> <if test="author != null"> and author=#{author} </if> </where> </select>
1.2 当只有title不为空时,运行结果的sql语句
Preparing: select * from blog WHERE title=?
1.3 当只有anthor不为空时,运行结果的sql语句
select * from blog WHERE author=?
这里的and被自动去掉了
1.4 当title和anthor不为空时,运行结果的sql语句
select * from blog WHERE title=? and author=?
这里的and就没有被删除,很智能化
2 choose标签(类似于Java中的swtich选择结构)
<select id="getBlogChoose" parameterType="map" resultType="blog"> select * from blog <where> <choose> <when test="title != null">/* 如果前面条件通过,后面的都不会实现 */ title=#{title} </when> <when test="author != null"> and author = #{author} </when> <otherwise> and views=#{views} </otherwise> </choose> </where> </select>
3 set标签(主要用于数据更新) set标签会自动加上set并且会去除多余的‘,’
Mapper标签
<update id="updateBlog" parameterType="map"> update blog <set> <if test="title != null"> title=#{title}, </if> <if test="author != null"> author=#{author}, </if> </set> where views=#{views} </update>
实现
@Test public void updateBlog(){ SqlSession sqlSession = sqlSessionFactory.getsqlSession(); blogMapper mapper = sqlSession.getMapper(blogMapper.class); HashMap map = new HashMap(); map.put("title","微服务11"); map.put("author","小落11"); map.put("views",1000); mapper.updateBlog(map); sqlSession.commit();//注意增删改要提交事务 sqlSession.close();
sql结果(可以看到author后的,没有了)
update blog SET title=?, author=? where views=?
这篇关于动态SQL常用标签的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器