Mybatis——實現介面式程式設計
阿新 • • 發佈:2019-02-19
通常情況下,都是使用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();
}
}