介绍
本篇文章为大家展示了怎么在MyBatis中配置动态SQL,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
<强>动态SQL 强>
什么是动态SQL:
动态SQL就是根据不同的条件生成不同的SQL语句
- <李>
李>如果<李>
选择(当,否则)
李> <李>修剪(,集)
李> <李>foreach
李> 1,搭建环境
建表
CREATE TABLE “博客”( “id”,才能VARCHAR (50), NOT NULL COMMENT & # 39;博客id # 39;, “标题”,才能VARCHAR (100), not null comment & # 39;博客标题& # 39;, “作者”,才能VARCHAR (30), not null comment & # 39;博客作者& # 39;, “creat_time”,才能datetime not null comment & # 39;创建时间& # 39;, “视图”,才能int (30), not null comment & # 39;浏览量& # 39; )引擎=InnoDB DEFAULT CHARSET=utf8
创建一个基础工程
导包
编写配置文件
编写实体类
@ data public class  Blog { private 才能int id; private 才能String 标题; private 才能String 作者; private 才能;Date  creatTime; private 才能int 意见; }
编写实体类对应的Mapper接口和映射器。xm
2,如果
& lt; select id=皅ueryBlogIF", parameterType=癿ap", resultType=癱om.rui.pojo.Blog"比; select *,才能得到mybatis.bolg where 1=1 & lt;才能if 测试=皌itle !=, null"比; ,,,以及title =, #{标题} & lt;才能/if> & lt;才能if 测试=癮uthor !=, null"比; ,,,以及author =, #{作者} & lt;才能/if> & lt;/select>
@Test public void  queryBlogIF () { SqlSession 才能;SqlSession =, MyBatisUtils.getSqlSession (); BlogMapper 才能;mapper =, sqlSession.getMapper (BlogMapper.class); HashMap 才能;map =, new HashMap (); map.put才能(“author",“尹锐“); List<才能;Blog>, blogs =, mapper.queryBlogIF(地图); for 才能;(Blog Blog :博客),{ ,,,System.out.println(博客); ,,} sqlSession.close才能(); }
3,选择(当,否则)
& lt; select id=皅ueryBlogChoose", parameterType=癿ap", resultType=癱om.rui.pojo.Blog"比; select *,才能得到mybatis.bolg & lt;才能where> ,,,& lt; choose> ,,,,,& lt; when 测试=皌itle !=, null"比; ,,,,,,,title=#{标题} ,,,,,& lt;/when> ,,,,,& lt; when 测试=白髡?=null"比; ,,,,,,,以及author =, #{作者} ,,,,,& lt;/when> ,,,,,& lt; otherwise> ,,,,,,,以及views =, #{观点} ,,,,,& lt;/otherwise> ,,,& lt;/choose> & lt;才能/where> & lt;/select>
4,修剪(,集)
select *得到mybatis.bolg & lt; where> & lt; if 测试=皌itle  !=, null"比; title 才能=,#{标题} & lt;/if> & lt; if 测试=癮uthor  !=, null"比; 以及才能author =, #{作者} & lt;/if> & lt;/where>
& lt; update id=皍pdateBlog", parameterType=癿ap"比; update mybatis.bolg才能 & lt;才能set> ,,,& lt; if 测试=皌itle !=, null"比; ,,,,,title =, #{标题}, ,,,& lt;/if> ,,,& lt; if 测试=癮uthor !=, null"比; ,,,,,author =, #{作者}, ,,,& lt;/if> & lt;才能/set> where 才能;id =, # {id} & lt;/update>
所谓的动态SQL,本质还是SQL语句,只是我们可以在SQL层面,去执行一些逻辑代码
5, Foreach
select *,得到user where 1=1,以及 ,& lt; foreach 项=癷d",指数=癷ndex",收集=癷ds" ,才能打开=?“,分离器=皁r",关闭=?“比; ,,,# {id} ,& lt;/foreach> (id=1,趁机id=2,趁机id=3)
& lt; !— null null null null null null null null null null null null null null null null null null null null null null null null null