欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù)庫操作。前提是必須保證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)文章

最新評(píng)論