1. 程式人生 > >Mybatis——實現介面式程式設計

Mybatis——實現介面式程式設計

通常情況下,都是使用SqlSession例項的selectXXX(selectOne, selectList, selectMap)方法來執行對映檔案中相應的SQL語句的,這些方法都有一個共同的特徵,那就是第一個引數都是String型別的,我們需要使用這個引數明確告之Mybatis我們是需要執行對映檔案的哪一個元素下的SQL語句,所以這個引數內容應該是對映檔案的名稱空間加上相應元素的id值,如:

String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream
(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //獲取 SqlSession 例項 能直接執行已經對映的SQL語句 SqlSession openSession = sqlSessionFactory.openSession(); Employee employee = openSession.selectOne("com.mybatis.EmployeeMapper.selectEmp", 1
);

對映檔案的名稱空間再也不是隨心所欲的定義的了,而是要使用代理介面的全限定名作為其名稱空間。所謂全限定名,就是介面所在的包名加上介面名稱。


public interface EmployeeMapper {

    public Employee getEmpById(Integer id);
}
<mapper namespace="com.mybatis.dao.EmployeeMapper">
<select id="getEmpById" resultType="com.mybatis.bean.Employee">
        select
* from tbl_employee where id = #{id} </select> </mapper>

在Mybatis的總配置檔案中,加入如下語句。

<mappers>
    <mapper resource="EmployeeMapper.xml"/>
  </mappers>

這樣,我們就可以在Java程式碼中直接呼叫我們定義的代理介面中的方法了。

@Test
    public void test01() throws IOException{
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            //獲取介面的實現類
            //會為介面自動的建立一個代理物件,代理物件去執行增刪改查方法
            EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
            Employee employee = mapper.getEmpById(1);
            System.out.println(employee);
        } finally {
            openSession.close();
        }
    }