看完了以前的mybatis原始的dao開發方法是否是以爲有點笨重,甚至說沒有發揮mybatisjava
做爲一個框架的優點。總結了一下,原始的dao方法有如下幾點不足之處程序員
SqlSession sqlSession = sqlSessionFacory.openSession();
sqlSession.commit();
sqlSession.close();
這三行代碼幾乎在每一個方法裏面都能看見,設想可否將這些代碼提取出來,大大減輕程序員的工做量。spring
因此既然出現了問題,改進是勢在必行的。接下來就讓咱們看看如何改進。sql
固然就是今天的主題mapper代理開發方式了mybatis
正在這種開發方式中,程序員須要編寫mapper.xml文件,其實就是一個相似於以前的user.xml的文件app
另外在mapper代理方法中程序員只要寫mapper接口(至關於dao接口)遵循一些開發規範,mybatis能夠自動生成mapper接口實現類代理對象(就是實現接口類不用我們去寫了)框架
具體有如下幾個規範:測試
在mapper.xml中的namespace等於mapper接口地址 ui
根據以上規範能夠寫出根據id查詢用戶信息方法的定義了編碼
爲了更好地理解上面的規範,下面給出映射文件方便進行對比
總結一下:以上規範就是對下面代碼進行統一輩子成
由於別的方法都大同小異,因此這裏只寫了一個方法findUserById,下面測試也是同樣,直接測試mapper接口裏的findUserById方法,別的方法就不去測試了
代碼以下:
public class UserMapperTest { private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception { //獲得配置文件流 InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml"); //建立會話會話工廠 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } @Test public void testFindUserById() throws Exception { //建立會話 SqlSession sqlSession = sqlSessionFactory.openSession(); //建立mapper代理對象 UserMapper userMapper= sqlSession.getMapper(UserMapper.class); //調用代理對象的方法,打印結果 System.out.println(userMapper.findUserById(32)); } }
裏面最重要的一句就是
UserMapper userMapper= sqlSession.getMapper(UserMapper.class);
這句代碼把咱們以前的建立接口的實現類這一步的工做省略了,直接生成一個代理對象,而後經過這個對象去調用方法,執行一系列操做
結果以下:
好了,到這裏兩種dao開發方法都講完了,固然後面與spring整合以後的dao開發方法更系統,用起來更棒更爽,請期待更新。。。