一、模糊查询
需求:根据博客的名字查询博客列表(模糊查询)
方式一:使用#传参
mapper:
注意:参数占位符名称任意
<select id="selectBlogByTitle" parameterType="string" resultMap="blogResultMap">
select * from blog where title like #{title}
</select> |
接口:
List<Blog> selectBlogByTitle(String title); |
测试:
@Test
public void testSelectBlogByTitle() {
SqlSession session = MyBatisUtil.getSqlSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
List<Blog> blogList = blogMapper.selectBlogByTitle("%o%");
session.close();
System.out.println(blogList);
} |
方式二:使用$传参
mapper:
注意:当时用$传参时,如果参数是单值类型(简单类型),并且只有一个参数,
那么参数必须使用
value 占位,并且如果参数是字符串,要使用引号:
<select id="selectBlogByTitle2" parameterType="string" resultMap="blogResultMap">
select * from blog where title like '%${value}%'
</select> |
接口:
List<Blog> selectBlogByTitle2(String title); |
测试:
@Test
public void testSelectBlogByTitle2() {
SqlSession session = MyBatisUtil.getSqlSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
//List<Blog> blogList = blogMapper.selectBlogByTitle2("%o%");
List<Blog> blogList = blogMapper.selectBlogByTitle2("o");
session.close();
System.out.println(blogList);
} |
比较#和$的区别:
- #是占位符?,$是字符串拼接。因此使用$的时候,如果参数是字符串类型,那么要使用引号
- 尽量使用# 而不是 $
- 当参数表示表名或列名的时候,只能使用 $
不区分大小写的查询:
<select id="selectBlogByTitle2" parameterType="string" resultMap="blogResultMap">
select * from blog where lower(title) like lower('%${value}%')
</select> |
二、排序
需求:按照某一列排序
注意:
1、如果使用#,那么sql不会报错,但是排序功能不好使;所以应该使用$
2、中文排序,需要使用mysql的转换函数 CONVERT
mapper
<select id="selectBlogBySort" parameterType="string" resultMap="blogResultMap">
select * from blog order by CONVERT(${value} USING gbk)
<!-- select * from blog order by ${value} -->
</select> |
接口
List<Blog> selectBlogBySort(String column); |
测试
@Test
public void testSelectBlogBySort() {
SqlSession session = MyBatisUtil.getSqlSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
List<Blog> blogList = blogMapper.selectBlogBySort("title");
/*List<Blog> blogList = blogMapper.selectBlogBySort("CONVERT(title USING gbk)");*/
session.close();
System.out.println(blogList);
} |