亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis獲取參數(shù)值的五種情況分析(推薦)

 更新時(shí)間:2024年11月21日 11:16:15   作者:雷神樂(lè)樂(lè)  
本文通過(guò)實(shí)例代碼給大家介紹MyBatis獲取參數(shù)值的五種情況分析,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

MyBatis獲取參數(shù)值的兩種方式:${}和#{}
${}本質(zhì):字符串拼接
#{}本質(zhì):占位符賦值

MyBatis獲取參數(shù)值的各種情況:

1. mapper接口方法的參數(shù)為單個(gè)的字面量類(lèi)型:

可以通過(guò)${}和#{}以任意的名稱(chēng)獲取參數(shù)值,但是需要注意${}的單引號(hào)問(wèn)題

ParameterMapper接口:

User getUserByUsername(String username);

ParameterMapper.xml:

<select id="getUserByUsername" resultType="User">
    <!-- select * from t_user where username = #{username};-->
    select * from t_user where username = '${username}';
</select>

ParameterMapperTest:

@Test
public void testGetUserByUsername() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
    User user = mapper.getUserByUsername("admin");
    System.out.println(user);
}

2. mapper接口方法的參數(shù)為多個(gè)時(shí):

此時(shí)MyBatis會(huì)將這些參數(shù)放在一個(gè)map集合中,以?xún)煞N方式進(jìn)行存儲(chǔ)

a>以arg0,arg1...為鍵,以參數(shù)為值

b>以param1,param2...為鍵,以參數(shù)為值

一次只需要通過(guò)#{}和${}以鍵的方式訪(fǎng)問(wèn)即可,但是需要注意${}的單引號(hào)問(wèn)題

ParameterMapper接口:

User checkLogin(String username, String password);

ParameterMapper.xml:

<select id="checkLogin" resultType="User">
    <!-- select * from t_user where username = '${arg0}' and password = '${arg1}';-->
    select * from t_user where username = #{arg0} and password = #{arg1};
</select>

ParameterMapperTest:

@Test
public void testCheckLogin() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
    User user = mapper.checkLogin("admin", "123456");
    System.out.println(user);
}

3. 若mapper接口方法的參數(shù)有多個(gè)時(shí),可以手動(dòng)將這些參數(shù)放在一個(gè)map中存儲(chǔ):

只需要通過(guò)#{}和${}以鍵的方式訪(fǎng)問(wèn)值即可,但是需要注意${}的單引號(hào)問(wèn)題

ParameterMapper接口:

User checkLoginByMap(Map<String, Object> map);

ParameterMapper.xml:

<select id="checkLoginByMap" resultType="User">
    select *
    from t_user
    where username = #{username}
      and password = #{password};
</select>

ParameterMapperTest:

@Test
public void testCheckLoginByMap() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
    HashMap<String, Object> map = new HashMap<>();
    map.put("username", "admin");
    map.put("password", "123456");
    User user = mapper.checkLoginByMap(map);
    System.out.println(user);
}

4. mapper接口方法的參數(shù)是實(shí)體類(lèi)類(lèi)型的參數(shù):

只需要通過(guò)#{}和${}以屬性值的方式訪(fǎng)問(wèn)值即可,但是需要注意${}的單引號(hào)問(wèn)題

ParameterMapper接口:

int insertUser(User user);

ParameterMapper.xml:

<insert id="insertUser">
    insert into t_user
    values (null, #{username}, #{password}, #{age}, #{sex}, #{email});
</insert>

ParameterMapperTest:

@Test
public void testInsertUser() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
    int num = mapper.insertUser(new User(null, "李四", "789789", 25, "男", "456123@qq.com"));
    System.out.println(num);
}

5. 使用@Param注解命名參數(shù):

此時(shí)MyBatis會(huì)將這些參數(shù)放在一個(gè)map集合中,以?xún)煞N方式進(jìn)行存儲(chǔ)

a>以@Param注解的值為鍵,以參數(shù)為值

b>以param1,param2...為鍵,以參數(shù)為值

因此只需要通過(guò)#{}和${}以鍵的方式訪(fǎng)問(wèn)值即可,但是需要注意${}的單引號(hào)問(wèn)題

ParameterMapper接口:

User checkLoginByParam(@Param("username") String username, @Param("password") String password);

ParameterMapper.xml:

<!--User checkLoginByParam(@Param("username") String username, @Param("password") String password);-->
<select id="checkLoginByParam">
    select *
    from t_user
    where username = #{username}
      and password = #{password};
</select>

ParameterMapperTest:

@Test
public void testCheckLoginByParam() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
    User user = mapper.checkLoginByParam("admin", "123456");
    System.out.println(user);
}

總結(jié):

上面的五種情況想要記清楚還是比較難的,所以我們可以分為兩種情況:

一種是在參數(shù)中加上@Param

一種是使用屬性值

到此這篇關(guān)于MyBatis獲取參數(shù)值的五種情況的文章就介紹到這了,更多相關(guān)MyBatis獲取參數(shù)值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解java關(guān)于對(duì)象的比較

    詳解java關(guān)于對(duì)象的比較

    這篇文章主要為大家介紹了java關(guān)于對(duì)象的比較,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Spring如何集成ibatis項(xiàng)目并實(shí)現(xiàn)dao層基類(lèi)封裝

    Spring如何集成ibatis項(xiàng)目并實(shí)現(xiàn)dao層基類(lèi)封裝

    這篇文章主要介紹了Spring如何集成ibatis項(xiàng)目并實(shí)現(xiàn)dao層基類(lèi)封裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • idea 有時(shí)提示找不到類(lèi)或者符號(hào)的解決

    idea 有時(shí)提示找不到類(lèi)或者符號(hào)的解決

    這篇文章主要介紹了idea 有時(shí)提示找不到類(lèi)或者符號(hào)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Spring web集成rabbitmq代碼實(shí)例

    Spring web集成rabbitmq代碼實(shí)例

    這篇文章主要介紹了Spring web集成rabbitmq代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • spring validation多層對(duì)象校驗(yàn)教程

    spring validation多層對(duì)象校驗(yàn)教程

    這篇文章主要介紹了spring validation多層對(duì)象校驗(yàn)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java中的interface接口實(shí)例詳解

    java中的interface接口實(shí)例詳解

    這篇文章主要介紹了 java中的interface接口實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Spring Boot整合FTPClient線(xiàn)程池的實(shí)現(xiàn)示例

    Spring Boot整合FTPClient線(xiàn)程池的實(shí)現(xiàn)示例

    這篇文章主要介紹了Spring Boot整合FTPClient線(xiàn)程池的實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Spring Boot接口冪等插件用法示例解析

    Spring Boot接口冪等插件用法示例解析

    這篇文章主要介紹了Spring Boot接口冪等插件用法示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 基于RestTemplate的使用方法(詳解)

    基于RestTemplate的使用方法(詳解)

    下面小編就為大家?guī)?lái)一篇基于RestTemplate的使用方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Java?C++題解leetcode902最大為N的數(shù)字組合數(shù)位DP

    Java?C++題解leetcode902最大為N的數(shù)字組合數(shù)位DP

    這篇文章主要為大家介紹了Java?C++題解leetcode902最大為N的數(shù)字組合數(shù)位DP,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評(píng)論