动态SQL之IF语句
大约 5 分钟数据库技术Mybatis
1、接口类BlogMapper.java新增方法
/**
* 查询信息
* @param map
* @return
*/
List<Blog> queryBlog(Map map);
2、mapper文件BlogMapper.xml修改
<select id="queryBlog" parameterType="map" resultType="Blog">
select * from blog where 1=1
<if test="title != null">
and title = #{title}
</if>
<if test="author != null">
and author = #{author}
</if>
</select>
3、测试
不传任何条件
@Test
public void test02(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
/**
* map无内容
*/
HashMap<Object, Object> map = new HashMap<>();
List<Blog> blogs = blogMapper.queryBlog(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
sqlSession.close();
}
结果
Opening JDBC Connection
Created connection 515715487.
==> Preparing: select * from blog where 1=1
==> Parameters:
<== Columns: id, title, author, create_time, views
<== Row: e1eb3ed0c6c9458b8d0779ae9062c754, Mybatis如此简单, 狂神说, 2020-11-29 08:28:30, 22222
<== Row: a7c9288aaf894872b0ad282bfd5cadfc, Java如此简单, 狂神说, 2020-11-29 08:28:30, 33333
<== Row: 51561ae07e6c48629b5536b873ab47f5, Spring如此简单, 狂神说, 2020-11-29 08:28:30, 44444
<== Row: cc6626f2912342358609b7ae035a7bb5, 微服务如此简单, 狂神说, 2020-11-29 08:28:30, 99999
<== Row: a4a36cb8722b492e96919a64dae72ff5, Mybatis如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Row: a230ab751c8b4a7f9e2072bf9d6c18e1, Java如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Row: f1d89e894ff64098be569769e62e82f9, Spring如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Row: ab9f312552964bb39500dda06ca2ae61, 微服务如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Total: 8
Blog(id=e1eb3ed0c6c9458b8d0779ae9062c754, title=Mybatis如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=22222)
Blog(id=a7c9288aaf894872b0ad282bfd5cadfc, title=Java如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=33333)
Blog(id=51561ae07e6c48629b5536b873ab47f5, title=Spring如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=44444)
Blog(id=cc6626f2912342358609b7ae035a7bb5, title=微服务如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=99999)
Blog(id=a4a36cb8722b492e96919a64dae72ff5, title=Mybatis如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Blog(id=a230ab751c8b4a7f9e2072bf9d6c18e1, title=Java如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Blog(id=f1d89e894ff64098be569769e62e82f9, title=Spring如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Blog(id=ab9f312552964bb39500dda06ca2ae61, title=微服务如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1ebd319f]
Returned connection 515715487 to pool.
Process finished with exit code 0
传title
@Test
public void test02(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
HashMap<Object, Object> map = new HashMap<>();
map.put("title","Mybatis如此简单");
List<Blog> blogs = blogMapper.queryBlog(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
sqlSession.close();
}
结果
Opening JDBC Connection
Created connection 515715487.
==> Preparing: select * from blog where 1=1 and title = ?
==> Parameters: Mybatis如此简单(String)
<== Columns: id, title, author, create_time, views
<== Row: e1eb3ed0c6c9458b8d0779ae9062c754, Mybatis如此简单, 狂神说, 2020-11-29 08:28:30, 22222
<== Row: a4a36cb8722b492e96919a64dae72ff5, Mybatis如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Total: 2
Blog(id=e1eb3ed0c6c9458b8d0779ae9062c754, title=Mybatis如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=22222)
Blog(id=a4a36cb8722b492e96919a64dae72ff5, title=Mybatis如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1ebd319f]
Returned connection 515715487 to pool.
Process finished with exit code 0
传author
@Test
public void test02()
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
HashMap<Object, Object> map = new HashMap<>();
map.put("author","狂神说");
List<Blog> blogs = blogMapper.queryBlog(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
sqlSession.close();
}
结果
Opening JDBC Connection
Created connection 515715487.
==> Preparing: select * from blog where 1=1 and author = ?
==> Parameters: 狂神说(String)
<== Columns: id, title, author, create_time, views
<== Row: e1eb3ed0c6c9458b8d0779ae9062c754, Mybatis如此简单, 狂神说, 2020-11-29 08:28:30, 22222
<== Row: a7c9288aaf894872b0ad282bfd5cadfc, Java如此简单, 狂神说, 2020-11-29 08:28:30, 33333
<== Row: 51561ae07e6c48629b5536b873ab47f5, Spring如此简单, 狂神说, 2020-11-29 08:28:30, 44444
<== Row: cc6626f2912342358609b7ae035a7bb5, 微服务如此简单, 狂神说, 2020-11-29 08:28:30, 99999
<== Row: a4a36cb8722b492e96919a64dae72ff5, Mybatis如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Row: a230ab751c8b4a7f9e2072bf9d6c18e1, Java如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Row: f1d89e894ff64098be569769e62e82f9, Spring如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Row: ab9f312552964bb39500dda06ca2ae61, 微服务如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Total: 8
Blog(id=e1eb3ed0c6c9458b8d0779ae9062c754, title=Mybatis如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=22222)
Blog(id=a7c9288aaf894872b0ad282bfd5cadfc, title=Java如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=33333)
Blog(id=51561ae07e6c48629b5536b873ab47f5, title=Spring如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=44444)
Blog(id=cc6626f2912342358609b7ae035a7bb5, title=微服务如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=99999)
Blog(id=a4a36cb8722b492e96919a64dae72ff5, title=Mybatis如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Blog(id=a230ab751c8b4a7f9e2072bf9d6c18e1, title=Java如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Blog(id=f1d89e894ff64098be569769e62e82f9, title=Spring如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Blog(id=ab9f312552964bb39500dda06ca2ae61, title=微服务如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1ebd319f]
Returned connection 515715487 to pool.
Process finished with exit code 0
同时传title和author
@Test
public void test02(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
HashMap<Object, Object> map = new HashMap<>();
map.put("title","Mybatis如此简单");
map.put("author","狂神说");
List<Blog> blogs = blogMapper.queryBlog(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
sqlSession.close();
}
结果
Opening JDBC Connection
Created connection 2063763486.
==> Preparing: select * from blog where 1=1 and title = ? and author = ?
==> Parameters: Mybatis如此简单(String), 狂神说(String)
<== Columns: id, title, author, create_time, views
<== Row: e1eb3ed0c6c9458b8d0779ae9062c754, Mybatis如此简单, 狂神说, 2020-11-29 08:28:30, 22222
<== Row: a4a36cb8722b492e96919a64dae72ff5, Mybatis如此简单, 狂神说, 2020-11-29 08:33:23, 99999
<== Total: 2
Blog(id=e1eb3ed0c6c9458b8d0779ae9062c754, title=Mybatis如此简单, author=狂神说, createTime=Sun Nov 29 16:28:30 CST 2020, views=22222)
Blog(id=a4a36cb8722b492e96919a64dae72ff5, title=Mybatis如此简单, author=狂神说, createTime=Sun Nov 29 16:33:23 CST 2020, views=99999)
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@7b02881e]
Returned connection 2063763486 to pool.
Process finished with exit code 0