mybatis 自動產生的like 查詢,需要自己給參數添加%,因為mybatis 不會自動添加%號的,這是mybatis 為了提供最大的靈活性決定的,因為mybatis 並不知道我是要在哪一個位置添加%。
從此我們可以舉一反三,凡是類似這類的問題,mybatis都不會自動的給我們添加我們期望的符號,因為它不知道該在哪裡添加,這種添加反而變成了畫蛇添足。
public PageInfo<StationCardPreBo> findStationCardPres( StationCardPreQueryBo stationCardPreQueryBo, PageBo pageBo) { StationCardPreQuery query = new StationCardPreQuery(); Criteria criteria = query.createCriteria(); if (stationCardPreQueryBo.getId() != null) { criteria.andIdEqualTo(stationCardPreQueryBo.getId()); } if (stationCardPreQueryBo.getStationNo() != null) { criteria.andStationNoLike("%" + stationCardPreQueryBo.getStationNo() + "%"); } if (stationCardPreQueryBo.getCardNo() != null) { criteria.andCardNoLike("%" + stationCardPreQueryBo.getCardNo()+ "%"); } // 设置分页参数 PageHelper.startPage(pageBo.getPageNum(), pageBo.getPageSize()); List<StationCardPre> list = stationCardPreMapper.selectByExample(query); PageInfo<StationCardPre> tempPageInfo = new PageInfo<>(list); PageInfo<StationCardPreBo> resultPage = new PageInfo<StationCardPreBo>(); BeanMapper.copy(tempPageInfo, resultPage); if (CollectionUtils.isNotEmpty(list)) { resultPage .setList(BeanMapper.mapList(list, StationCardPreBo.class)); } return resultPage; }
退一步講,如果你不知道mybatis最後給我們拼接的sql 語句是什麼的話,你可以印出來mysql 最後給我們拼接完的語句,或者是我們可以在mysql 的拼接處打上斷點,這樣我們就可以查看我們的sql語句了,從這裡分析問題的最終原因。
mybatis sql 建構位置:
以上是mybatis 的 like 查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!