上一章節中,我們已經搭建玩了最簡單的能夠運行的HelloWorld環境,這一章將把上章中的操作方式改為以接口的方式操作

我們可以發現在上一個章節中

    public static void testBasicQuery(int id) {
        SqlSession session 
= MybatisUtils.getSqlSession();
        
try {
            
/*
             * 此處的david.mybatis.demo.IVisitorOperation.basicQuery必須和下圖中配置里面的namespace對應
             
*/
            Visitor visitor 
= (Visitor) session.selectOne("david.mybatis.demo.IVisitorOperation.basicQuery", id);
            MybatisUtils.closeSession(session);
            System.out.println(visitor);
        } 
catch (Exception e) {
            
// TODO: handle exception
        }
    }

<!-- 此處namespace對應的就是你所傳的String參數 -->
<mapper namespace="david.mybatis.demo.IVisitorOperation">
<!-- 此處的resultType就是對應剛剛你在typeAlias節點里面規定的別名 -->
    
<select id="basicQuery" parameterType="int" resultType="Visitor">
        select * from visitor where id=#{id} and
        Status>0 order by Id
    
</select>
</mapper>

  這樣其實在真正的開發過程中如果兩邊的名字一不小心沒有對應上,就會出現異常。為了避免這樣的情況我們可以采取接口的方式來進行相應的操作,下面我們來修改這段東西。

首先我們在包名為david.mybatis.demo的下面新建一個IVisitOperation類,表示今后將要操作數據庫所有方法的接口,如下所示:

package david.mybatis.demo;

import java.util.List;

import david.mybatis.model.PagenateArgs;
import david.mybatis.model.Visitor;

public interface IVisitorOperation {    
    
/*
     * 基礎查詢
     
*/
    
public Visitor basicQuery(int id);
}
修改操作方式
    public static void testBasicQueryByInterfaceWay(int id) {
        SqlSession session 
= MybatisUtils.getSqlSession();
        
try {
            IVisitorOperation vOperation 
= session.getMapper(IVisitorOperation.class);
            Visitor visitor 
= vOperation.basicQuery(id);
            MybatisUtils.closeSession(session);
            System.out.println(visitor);
        } 
catch (Exception e) {
            e.printStackTrace();
        }
    }

這樣就大功告成了,這樣我們就不必為手動書寫方法名可能導致的不匹配而煩惱了。

下一章將繼續講述基于單表情況下的CRUD操作,我會盡快整理更新~^0^



如果你覺得這篇文章對你有用,歡迎推薦[推薦]

如果你覺得文章內有錯誤歡迎指出^0^~

如果您想轉載本博客,請注明出處

如果您對本文有意見或者建議,歡迎留言

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則作者保留追究法律責任的權利。