四、Mybatis的Dao層實現
阿新 • • 發佈:2021-12-05
一、傳統開發方式
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(); }