最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談MyBatis執(zhí)行SQL的兩種方式

 更新時(shí)間:2021年08月02日 10:06:54   作者:花傷情猶在  
本文介紹MyBatis執(zhí)行SQL語句的2種方式,主要是SqlSession和Mapper接口以及它們的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下

前言

本文介紹MyBatis執(zhí)行SQL語句的2種方式:SqlSession和Mapper接口以及它們的區(qū)別。

準(zhǔn)備接口和Mapper配置文件:

定義UserMapper接口:

package cn.cvs.dao;

import cn.cvs.pojo.User;

import java.util.List;

public interface UserMapper {
    //查找所有的用戶信息
    public List<User> findAll();
    //查詢用戶的數(shù)量
    public int selectCount();
}

定義UserMapper配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.cvs.dao.UserMapper">
<!--    查找所有的用戶信息-->
    <select id="findAll" resultType="cn.cvs.pojo.User">
        SELECT * FROM t_sys_user
    </select>
<!--    查詢用戶的數(shù)量-->
    <select id="selectCount" resultType="int">
        SELECT count(1) FROM t_sys_user
    </select>
</mapper>

指定sqlMapConfig其mapper文件的位置:

在sqlMapConfig.xml文件里面添加<mappers>成對標(biāo)簽,然后里加上成對的mapper標(biāo)簽,使用mapper的resource屬性指定mapper文件的路徑,這個(gè)路徑是從target/classes路徑開啟的。

使用注意:
resource=“mapper文件的路徑,使用 / 分割路徑”,記住不是"."
一個(gè)mapper resource 指定一個(gè)mapper文件

代碼模板:

<mappers>
	<mapper resource="mapper文件的路徑"/>
</mappers>

使用SqlSession 發(fā)送 SQL

指定要執(zhí)行的sql語句的 id:

sql的id = namespace+"."+ select|update|insert|delete標(biāo)簽的id屬性值

例如:
namespace為cn.cvs.dao.UserMapper指定id為selectCount的sql語句

格式:命名空間(namespace)+點(diǎn)(.)+id屬性值(id)
格式:cn.cvs.dao.UserMapper.selectCount

在這里插入圖片描述

這樣 MyBatis 就會找到對應(yīng)的 SQL

通過SqlSession的方法,執(zhí)行sql語句

List<User> list = sqlSession.selectList("cn.cvs.dao.UserMapper.findAll");

selectList 方法表示使用查詢并且只返回一個(gè)List集合

如果在 MyBatis 中只有一個(gè) id 為 selectCount 的 SQL,那么也可以簡寫為:

List<User> list = sqlSession.selectList("selectCount");

這是 MyBatis 前身 iBatis 所留下的方式。

使用 Mapper 接口發(fā)送 SQL

用 Mapper 接口發(fā)送SQL就是以動(dòng)態(tài)代理的方式sqlsession.getMapper(dao.class)獲取dao接口對象,執(zhí)行對應(yīng)方法即可。這樣做不用我們再去寫dao接口的實(shí)現(xiàn)類就可以直接執(zhí)行對應(yīng)sql語句,其實(shí)就是MyBatis以代理的方式幫我們創(chuàng)建了接口的實(shí)現(xiàn)類。

Mapper規(guī)范:namespace要寫dao接口的全限定名稱,標(biāo)簽id要寫接口方法名

在這里插入圖片描述

通過 SqlSession 獲取 Mapper 接口,通過 Mapper 接口發(fā)送 SQL :

UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> list2=mapper.findAll();

通過 SqlSession 的 getMapper 方法來獲取一個(gè) Mapper 接口,就可以調(diào)用它的方法了。因?yàn)?XML文件或者接口注解定義的 SQL 都可以通過“類的全限定名+方法名”查找,所以 MyBatis 會啟用對應(yīng)的 SQL 進(jìn)行運(yùn)行,并返回結(jié)果。

比較兩種發(fā)送 SQL 方式

用 SqlSession 接口發(fā)送 SQL :
無需定義dao接口,直接通過"命名空間+id"調(diào)用對應(yīng)的SQL
List list = sqlSession.selectList(“cn.cvs.dao.UserMapper.findAll”);

用 Mapper 接口發(fā)送 SQL :
通過 SqlSession 獲取 Mapper 接口
格式:接口類名 對象名 = sqlSession.getMapper(接口類名.class);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
調(diào)用對應(yīng)的SQL
List list2=mapper.findAll();

建議采用 SqlSession 獲取 Mapper 接口的方式:

使用 Mapper 接口編程可以消除 SqlSession 帶來的功能性代碼,提高可讀性,而 SqlSession 發(fā)送 SQL,需要一個(gè)> SQL id 去匹配 SQL,比較晦澀難懂。

到此這篇關(guān)于淺談MyBatis執(zhí)行SQL的兩種方式的文章就介紹到這了,更多相關(guān)MyBatis執(zhí)行SQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Scala入門之List使用詳解

    Scala入門之List使用詳解

    這篇文章主要介紹了Scala入門之List使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Java實(shí)現(xiàn)簡單版貪吃蛇游戲

    Java實(shí)現(xiàn)簡單版貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單版貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • springboot?+rabbitmq+redis實(shí)現(xiàn)秒殺示例

    springboot?+rabbitmq+redis實(shí)現(xiàn)秒殺示例

    本文主要介紹了springboot?+rabbitmq+redis實(shí)現(xiàn)秒殺示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java Grpc實(shí)例創(chuàng)建負(fù)載均衡詳解

    Java Grpc實(shí)例創(chuàng)建負(fù)載均衡詳解

    這篇文章主要介紹了Java Grpc實(shí)例創(chuàng)建負(fù)載均衡詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • MyBatis-Plus多表聯(lián)合查詢并且分頁(3表聯(lián)合)

    MyBatis-Plus多表聯(lián)合查詢并且分頁(3表聯(lián)合)

    這篇文章主要介紹了MyBatis-Plus多表聯(lián)合查詢并且分頁(3表聯(lián)合),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java遍歷文件夾下所有文件并重新命名

    Java遍歷文件夾下所有文件并重新命名

    這篇文章主要為大家詳細(xì)介紹了Java遍歷文件夾下所有文件并重新命名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • java操作mongodb實(shí)現(xiàn)CURD功能實(shí)例

    java操作mongodb實(shí)現(xiàn)CURD功能實(shí)例

    mongodb支持多種語言,并且提供了多種語言的驅(qū)動(dòng),本文使用java操作mongodb實(shí)現(xiàn)CURD功能,大家參考使用吧
    2013-12-12
  • SpringBoot項(xiàng)目請求不中斷動(dòng)態(tài)更新代碼的實(shí)現(xiàn)

    SpringBoot項(xiàng)目請求不中斷動(dòng)態(tài)更新代碼的實(shí)現(xiàn)

    在開發(fā)中,有時(shí)候不停機(jī)動(dòng)態(tài)更新代碼熱部署是一項(xiàng)至關(guān)重要的功能,它可以在請求不中斷的情況下下更新代碼,這種方式不僅提高了開發(fā)效率,還能加速測試和調(diào)試過程,本文將詳細(xì)介紹如何在 Spring Boot 項(xiàng)目在Linux系統(tǒng)中實(shí)現(xiàn)熱部署,特別關(guān)注優(yōu)雅關(guān)閉功能的實(shí)現(xiàn)
    2024-09-09
  • 通過IDEA快速定位和排除依賴沖突問題

    通過IDEA快速定位和排除依賴沖突問題

    這篇文章主要介紹了通過IDEA快速定位和排除依賴沖突問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • springboot2.0集成rabbitmq的示例代碼

    springboot2.0集成rabbitmq的示例代碼

    這篇文章主要介紹了springboot2.0集成rabbitmq的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論

萨迦县| 无锡市| 连南| 汤原县| 石渠县| 凤凰县| 江都市| 无为县| 搜索| 乐业县| 伊金霍洛旗| 荥阳市| 沙湾县| 漯河市| 榆中县| 禹城市| 洛隆县| 温泉县| 阜城县| 廊坊市| 富锦市| 汪清县| 台江县| 岳西县| 西峡县| 日照市| 临邑县| 加查县| 奉节县| 平定县| 油尖旺区| 鄂尔多斯市| 如东县| 新民市| 繁峙县| 紫阳县| 和政县| 延川县| 五台县| 瓮安县| 河源市|