首頁 > 軟體

MyBatis詳解如何實現Dao層介面

2022-04-15 10:05:53

傳統開發方式

編寫UserDao介面

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

編寫UserDaompl實現

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;
    }
}

傳統測試方法

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

        System.out.println(all);
    }
}

我們發現使用傳統的開發方式,每次都要實現介面的程式碼編寫,這樣也有很多的程式碼冗餘,也是相當的繁瑣,下面,MyBatis為我們提供了代理開發的方法,我們只需要提供介面,MyBatis框架就可以根據介面定義為我們實現。

代理開發方法

代理開發方式介紹

採用MyBatis的代理開發方式實現Dao層的開發,這種方式是我們後面進入企業的主流。

Mapper介面開發方法只需要程式設計師編寫Mapper介面(相當與Dao介面),由MyBatis框架根據介面定義建立介面的動態代理物件,代理物件方法體同上邊Dao介面實現類方法。

Mapper介面開發需要遵循一下規範:

  • 1、Mapper.xml檔案中的namespacemapper介面的全限定名相同
  • 2、Mapper介面方法名和Mapper.xml中定義的每個Statement的id相同
  • 3、Mapper介面方法的輸入引數型別和Mapper.xml中定義的每個sql的parameterType的型別相同
  • 4、Mapper介面方法的輸出引數型別和Mapper.xml中定義的每個sql的resultType的型別相同

編寫UserMapper介面

測試代理方法

介面:

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

測試程式碼:

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框架生產的UserMapper介面的實現類
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<user> all = mapper.findAll();

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

根據id查詢:

介面:

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

測試:

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

到此這篇關於MyBatis詳解如何實現Dao層介面的文章就介紹到這了,更多相關MyBatis Dao層介面內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com