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

MyBatis詳解如何實(shí)現(xiàn)Dao層接口

 更新時(shí)間:2022年04月14日 18:49:25   作者:Tangable22  
MyBatis允許只聲明一個(gè)dao接口,而無需寫dao實(shí)現(xiàn)類的方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作。前提是必須保證Mapper文件中的<mapper>標(biāo)簽的namespace屬性值必須要和dao接口的類路徑一致,MyBatis容器會(huì)自動(dòng)通過動(dòng)態(tài)代理生成接口的實(shí)現(xiàn)類

傳統(tǒng)開發(fā)方式

編寫UserDao接口

public interface UserMapper {
    public List<User> findAll() throws IOException;
}

編寫UserDaompl實(shí)現(xiàn)

public class UserMapperImp implements UserMapper {

    @Override
    public List<User> findAll() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = build.openSession();

        List<User> users=sqlSession.selectList("User.findAll");
        sqlSession.close();
        return users;
    }
}

傳統(tǒng)測(cè)試方法

public class ServiceCode {
    public static void main(String[] args) throws IOException {
        UserMapper userMapper = new UserMapperImp();
        List<User> all = userMapper.findAll();

        System.out.println(all);
    }
}

我們發(fā)現(xiàn)使用傳統(tǒng)的開發(fā)方式,每次都要實(shí)現(xiàn)接口的代碼編寫,這樣也有很多的代碼冗余,也是相當(dāng)?shù)姆爆?,下面,MyBatis為我們提供了代理開發(fā)的方法,我們只需要提供接口,MyBatis框架就可以根據(jù)接口定義為我們實(shí)現(xiàn)。

代理開發(fā)方法

代理開發(fā)方式介紹

采用MyBatis的代理開發(fā)方式實(shí)現(xiàn)Dao層的開發(fā),這種方式是我們后面進(jìn)入企業(yè)的主流。

Mapper接口開發(fā)方法只需要程序員編寫Mapper接口(相當(dāng)與Dao接口),由MyBatis框架根據(jù)接口定義創(chuàng)建接口的動(dòng)態(tài)代理對(duì)象,代理對(duì)象方法體同上邊Dao接口實(shí)現(xiàn)類方法。

Mapper接口開發(fā)需要遵循一下規(guī)范:

  • 1、Mapper.xml文件中的namespacemapper接口的全限定名相同
  • 2、Mapper接口方法名和Mapper.xml中定義的每個(gè)Statement的id相同
  • 3、Mapper接口方法的輸入?yún)?shù)類型和Mapper.xml中定義的每個(gè)sql的parameterType的類型相同
  • 4、Mapper接口方法的輸出參數(shù)類型和Mapper.xml中定義的每個(gè)sql的resultType的類型相同

編寫UserMapper接口

在這里插入圖片描述

測(cè)試代理方法

接口:

public interface UserMapper {
    public List<User> findAll() ;
}

測(cè)試代碼:

public class Test {
    public static void main(String[] args) throws Exception {
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        SqlSessionFactory sqlSessionFactory = new 				    				SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //獲得MyBatis框架生產(chǎn)的UserMapper接口的實(shí)現(xiàn)類
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<user> all = mapper.findAll();

        for (user user : all) {
            System.out.println(user);
        }
    }

根據(jù)id查詢:

接口:

public interface UserMapper {
    //根據(jù)id查詢
    public User findById(int id);
}

測(cè)試:

UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user=mapper.findById(2);
System.out.println(user);

到此這篇關(guān)于MyBatis詳解如何實(shí)現(xiàn)Dao層接口的文章就介紹到這了,更多相關(guān)MyBatis Dao層接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java開發(fā)AOP面向切面編程入門

    java開發(fā)AOP面向切面編程入門

    這篇文章主要介紹了java開發(fā)的AOP面向切面編程入門的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步學(xué)有所得
    2021-10-10
  • Java的NIO之并發(fā)環(huán)境下非阻塞IO技術(shù)詳解

    Java的NIO之并發(fā)環(huán)境下非阻塞IO技術(shù)詳解

    這篇文章主要介紹了Java的NIO之并發(fā)環(huán)境下非阻塞IO技術(shù)詳解,Java NIO(New IO)是Java平臺(tái)提供的一種用于高效處理I/O操作的API,它引入了一組新的類和概念,以提供更好的性能和可擴(kuò)展性,需要的朋友可以參考下
    2023-09-09
  • 詳解Java中使用泛型實(shí)現(xiàn)快速排序算法的方法

    詳解Java中使用泛型實(shí)現(xiàn)快速排序算法的方法

    這篇文章主要介紹了Java中使用泛型實(shí)現(xiàn)快速排序算法的方法,快速排序的平均時(shí)間復(fù)雜度為(n\log n),文中的方法立足于基礎(chǔ)而并沒有考慮優(yōu)化處理,需要的朋友可以參考下
    2016-05-05
  • java 算法之快速排序?qū)崿F(xiàn)代碼

    java 算法之快速排序?qū)崿F(xiàn)代碼

    這篇文章主要介紹了java 算法之快速排序?qū)崿F(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • java 二叉查找樹實(shí)例代碼

    java 二叉查找樹實(shí)例代碼

    這篇文章主要介紹了java 二叉查找樹實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java中switch-case結(jié)構(gòu)的使用方法舉例詳解

    Java中switch-case結(jié)構(gòu)的使用方法舉例詳解

    這篇文章主要介紹了Java中switch-case結(jié)構(gòu)使用的相關(guān)資料,switch-case結(jié)構(gòu)是Java中處理多個(gè)分支條件的一種有效方式,它根據(jù)一個(gè)表達(dá)式的值來執(zhí)行不同的代碼塊,需要的朋友可以參考下
    2025-01-01
  • 淺談ThreadLocal為什么會(huì)內(nèi)存泄漏

    淺談ThreadLocal為什么會(huì)內(nèi)存泄漏

    這篇文章主要介紹了淺談ThreadLocal為什么會(huì)內(nèi)存泄漏,每個(gè)Thread內(nèi)部維護(hù)著一個(gè)ThreadLocalMap,它是一個(gè)Map,這個(gè)映射表的Key是一個(gè)弱引用,其實(shí)就是ThreadLocal本身,Value是真正存的線程變量Object,需要的朋友可以參考下
    2023-12-12
  • java讀取properties配置文件的方法

    java讀取properties配置文件的方法

    這篇文章主要介紹了java讀取properties配置文件的方法,涉及java操作properties配置文件的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • SpringCloud如何引用xxjob定時(shí)任務(wù)

    SpringCloud如何引用xxjob定時(shí)任務(wù)

    Spring?Cloud?本身不直接支持?XXL-JOB?這樣的定時(shí)任務(wù)框架,如果你想在?Spring?Cloud?應(yīng)用中集成?XXL-JOB,你需要手動(dòng)進(jìn)行配置,本文給大家介紹SpringCloud如何引用xxjob定時(shí)任務(wù),感興趣的朋友一起看看吧
    2024-04-04
  • SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換的方法

    SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換的方法

    這篇文章主要介紹了SpringBoot加載多個(gè)配置文件實(shí)現(xiàn)dev、product多環(huán)境切換,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

泊头市| 诸暨市| 格尔木市| 新巴尔虎右旗| 班玛县| 永济市| 普陀区| 左云县| 和田县| 德江县| 灵川县| 霍山县| 洪泽县| 白河县| 昭平县| 合川市| 全南县| 彭泽县| 九龙城区| 广宗县| 绿春县| 广元市| 枞阳县| 延寿县| 民乐县| 平远县| 杭锦旗| 浑源县| 灵台县| 太湖县| 阿坝县| 大田县| 鄂托克旗| 腾冲县| 石狮市| 伊宁市| 江津市| 香港 | 平罗县| 日照市| 抚远县|