1. 程式人生 > >Mybatis學習第2節 -- 模糊查詢之#和$的區別

Mybatis學習第2節 -- 模糊查詢之#和$的區別

url %s amp 參數 interface containe 模糊查詢 res ssi

先說結論, #是占位符,而$的行為是字符串拼接, 在參數是java的基本類型且只有一個參數的情況下,使用$時,只能用value作為參數傳遞 需求決定設計, 先在interface裏面添加相應方法
public interface ShopMapper {

Shop getShopById(Integer id);
Shop getShopByIdAlias(Integer id);

Shop getShopByTitleContainDollar(String value);
Shop getShopByTitleContainSharp(String value);
然後編寫mapper文件對應的查詢語句
<select id="getShopByTitleContainSharp" resultMap="simpleResultMap" >
select * from tb_shop where `shop_name` LIKE #{value}
</select>

<select id="getShopByTitleContainDollar" resultMap="simpleResultMap" >
select * from tb_shop where `shop_name` LIKE "${value}"
</select>
在測試類中進行測試
@Test
public void testGetShopByTitleContainSharp() {
String template = "查詢結果: %s";
SqlSession session = MyBatisUtil.getSqlSession();
ShopMapper mapper = session.getMapper(ShopMapper.class);
System.out.printf(template, mapper.getShopByTitleContainSharp("%ab%"));
session.close();
}
@Test
public void testGetShopByTitleContainDollar() {
String template = "查詢結果: %s";
SqlSession session = MyBatisUtil.getSqlSession();
ShopMapper mapper = session.getMapper(ShopMapper.class);
System.out.printf(template, mapper.getShopByTitleContainSharp("%黃人%"));
session.close();
}
$方式拼接字符串
==> Preparing: select * from tb_shop where `shop_name` LIKE ?
==> Parameters: %黃人%(String)
<== Columns: shop_id, owner_id, area_id, shop_category_id, shop_name, shop_desc, shop_addr, phone, shop_img, priority, create_time, last_edit_time, enable_status, advice
<== Row: 28, 1, 2, 22, 小黃人主題奶茶店, 不接受預訂,請直接來店裏進行消費, 位於東苑2號, 13810524086, /upload/images/item/shop/28/2017092601041469991.png, 50, 2017-09-26 01:04:13, 2017-09-26 01:04:13, 1, null
<== Total: 1

#方式特點
==> Preparing: select * from tb_shop where `shop_name` LIKE ?
==> Parameters: %黃人%(String)
<== Columns: shop_id, owner_id, area_id, shop_category_id, shop_name, shop_desc, shop_addr, phone, shop_img, priority, create_time, last_edit_time, enable_status, advice
<== Row: 28, 1, 2, 22, 小黃人主題奶茶店, 不接受預訂,請直接來店裏進行消費, 位於東苑2號, 13810524086, /upload/images/item/shop/28/2017092601041469991.png, 50, 2017-09-26 01:04:13, 2017-09-26 01:04:13, 1, null
<== Total: 1

如果面對中文內容有錯誤謹記在連接url裏面設置參數

jdbc:mysql://localhost:3306/oto?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

Mybatis學習第2節 -- 模糊查詢之#和$的區別