淺談為什么要使用mybatis的@param
起因
我們先來(lái)看一個(gè)報(bào)錯(cuò)

報(bào)錯(cuò)很簡(jiǎn)單,參數(shù) start 沒找到。
我是在實(shí)現(xiàn)一個(gè) API 接口時(shí)發(fā)現(xiàn)了一個(gè)問(wèn)題,當(dāng)我不使用 @Param 標(biāo)簽時(shí),mybatis 是不認(rèn)識(shí)哪個(gè)參數(shù)叫什么名字的,盡管我定義了 (long start,long end) 它仍然不認(rèn)識(shí)。在這個(gè)接口上,我希望根據(jù)前端傳來(lái)的參數(shù),查找指定范圍的數(shù)據(jù),例如:我想搜索第二頁(yè)的數(shù)據(jù),假設(shè)一頁(yè)20個(gè),那么搜索的范圍就是21-40,于是就會(huì)調(diào)用接口中的 getTypeListByRange 來(lái)查找對(duì)應(yīng) mapper 的 SQL 語(yǔ)句。
public interface TypeDao {
Type getTypeByid(long id);
List<Type> getTypeListAll();
List<Type> getTypeListByRange(long start,long end);
}
解釋 @Param
org.apache.ibatis.annotations.Param 當(dāng)映射器方法需要多個(gè)參數(shù)時(shí),這個(gè)注解可以被用于:給映射器方法中的每個(gè)參數(shù)來(lái)取一個(gè)名字。否則,多參數(shù)將會(huì)以它們的順序位置和SQL語(yǔ)句中的表達(dá)式進(jìn)行映射,這是默認(rèn)的。
語(yǔ)法要求:若使用@Param(“id”),則SQL中參數(shù)應(yīng)該被命名為:#{id}。
使用
Dao 層
import org.apache.ibatis.annotations.Param;
import com.caeser.upmovie.entity.Type;
public interface TypeDao {
Type getTypeByid(long id);
List<Type> getTypeListAll();
List<Type> getTypeListByRange(@Param("start")long start,@Param("end")long end);
}
Mapper
<select id="getTypeListByRange" resultType="com.caeser.upmovie.entity.Type">
SELECT
ID,
NAME,
CREATE_TIME,
UPDATE_TIME
FROM
upm_type
LIMIT
#{start},#{end};
</select>
單元測(cè)試
public class TypeTest extends BaseTest{
@Autowired
private TypeDao typeDao;
@Test
public void testDao(){
List<Type> typeList1=typeDao.getTypeListByRange(1, 4);
for(int i=0;i<typeList1.size();i++){
System.out.println(typeList1.get(i).getName());
}
}
}
結(jié)果

總結(jié)
當(dāng) Dao 層傳遞參數(shù)為多個(gè)參數(shù)時(shí),為了規(guī)范,必須使用 @Param 給參數(shù)命名。這里需要注意,使用的是 mybatis 的 param 來(lái)命名。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何修改覆蓋spring boot默認(rèn)日志策略logback詳解
這篇文章主要給大家介紹了關(guān)于如何修改覆蓋spring boot默認(rèn)日志策略logback的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10
Java?注解@PostConstruct的原理及最佳使用場(chǎng)景分析
@PostConstruct?是?Java?中非常實(shí)用的注解,尤其是在?Spring?等框架中,它使得開發(fā)者可以方便地在?Bean?初始化后執(zhí)行額外的操作,本文給大家介紹@PostConstruct?的原理、使用場(chǎng)景及最佳實(shí)踐,感興趣的朋友一起看看吧2025-04-04
SpringBoot MDC全鏈路調(diào)用日志跟蹤實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了SpringBoot MDC全鏈路調(diào)用日志跟蹤實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
java進(jìn)階解析Springboot上傳excel存入數(shù)據(jù)庫(kù)步驟
項(xiàng)目需要,寫了一個(gè),批量導(dǎo)入的接口。因?yàn)樾枰褂胑xcel去批量導(dǎo)入數(shù)據(jù),所以寫了一個(gè)例子,經(jīng)過(guò)測(cè)試已經(jīng)可以用于實(shí)際開發(fā),這里記錄一下2021-09-09
Java 類在 Tomcat 中是如何加載的(過(guò)程分析)
這篇文章主要介紹了Java 類在 Tomcat 中是如何加載的過(guò)程分析,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
java并發(fā)編程專題(六)----淺析(JUC)Semaphore
這篇文章主要介紹了java JUC)Semaphore的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07

