方式一:使用#传参
mapper:
注意:参数占位符名称任意
<select id=“selectBlogByTitle” parameterType=“string” resultMap=Blog">
select * from blog where title like #{title}
接口:
List selectBlogByTitle(String title);
测试:
@Test
public void testSelectBlogByTitle() {
SqlSession session = MyBatisUtil.getSqlSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
List<Blog> blogList = blogMapper.selectBlogByTitle**("%o%");**调用时%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
session.close();
System.out.println(blogList);
}
方式二:使用传参mapper:注意:当时用传参时,如果参数是单值类型(简单类型),并且只有一个参数,
那么参数必须使用 value 占位,并且如果参数是字符串,要使用引号:
select * from blog where title like '%${value}%'
接口:
List selectBlogByTitle2(String title);
测试:
@Test
public void testSelectBlogByTitle2() {
SqlSession session = MyBatisUtil.getSqlSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
List<Blog> blogList = blogMapper.selectBlogByTitle2**("o");**
session.close();
System.out.println(blogList);
}
比较#和$的区别:
#是占位符?,$是字符串拼接。因此使用$的时候,如果参数是字符串类型,那么要使用引号
尽量使用# 而不是 $
当参数表示表名或列名的时候,只能使用 $