mybatis中的#与$的区别

方式一:使用#传参
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传参 mapper: 注意:当时用传参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);
}

比较#和$的区别:

#是占位符?,$是字符串拼接。因此使用$的时候,如果参数是字符串类型,那么要使用引号
尽量使用# 而不是 $
当参数表示表名或列名的时候,只能使用 $
上一篇:GUI 窗口和面板


下一篇:用Java写出敬业福小程序:人人扫出敬业福