1. 程式人生 > 其它 >四、Mybatis的Dao層實現

四、Mybatis的Dao層實現

一、傳統開發方式

1. 編寫UserDao介面

1 public interface UserDao {
2   List<User> findAll() throws IOException;
3 }

2. 編寫UserDaoImpl實現

 1 public class UserDaoImpl implements UserDao {
 2     public List<User> findAll() throws IOException {
 3         InputStreamresourceAsStream = Resources.getResourceAsStream(
4 "SqlMapConfig.xml"); 5 6 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); 7 SqlSession sqlSession = sqlSessionFactory.openSession(); 8 List<User> userList = sqlSession.selectList("userMapper.findAll");
9 sqlSession.close(); 10 11 return userList; 12 } 13 }

二、代理開發方式

1. 代理開發方式介紹

採用 Mybatis 的代理開發方式實現 DAO 層的開發,這種方式是我們後面進入企業的主流。
Mapper 介面開發方法只需要程式設計師編寫Mapper 介面(相當於Dao 介面),由Mybatis 框架根據介面定義建立接
口的動態代理物件,代理物件的方法體同上邊Dao介面實現類方法。
Mapper 介面開發需要遵循以下規範:

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

2. 編寫UserMapper介面

3. 測試代理方式

public void testProxyDao() throws IOException
{
    InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    // 獲得 MyBatis 框架生成的 UserMapper 介面的實現類
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    User user = userMapper.findById(1);
    System.out.println(user);
    sqlSession.close();
}