IBatis3臨近發布正式版了
Posted on 2010-01-15 20:49 云自無心水自閑 閱讀(2372) 評論(4) 編輯 收藏 所屬分類: Java 、心得體會 、數據庫 、iBatisIBatis3的Beta8版本已經發布了,在官方網站上聲稱目前的版本已經非常穩定,只有4個已知的問題,其中2個是非功能性的。作者宣稱,這樣的狀況使它對于近期發布GA版本充滿信心。
那么IBatis3與IBatis2相比,究竟變化在哪里呢?
最重要的變化是IBatis3中引入了接口綁定(Interface Binding)的概念。在IBatis2中,沒有應用Java5的泛型,所以需要大量使用強制類型轉換,比如:
Employee employee = (Employee)sqlMapper.queryForList("getEmployee", 5);
//...and...
List employees = sqlMapper.queryForList("listAllEmployees");
但是在IBatis3中,方法改變成:
MapperFactory factory = someConfiguration.buildMapperFactory();
EmployeeMapper employeeMapper = factory.getMapper (EmployeeMapper.class);
Employee emp = empMapper.getEmployee(5);
//...and...
List<Employee> employees = empMapper.listAllEmployees();
所以IBatis3至少需要使用Java5以上的版本。上面代碼中,EmployeeMapper是一個自定義的接口(注意,開發人員只需要定義一個接口,不需要提供具體的實現)
public interface EmployeeMapper {
Employee getEmployee (int employeeId);
List<Employee> listAllEmployees();
}
這樣就行了,IBatis會自動為你生成接口的具體實現。是不是感覺有點酷?
那么IBatis3與IBatis2相比,究竟變化在哪里呢?
最重要的變化是IBatis3中引入了接口綁定(Interface Binding)的概念。在IBatis2中,沒有應用Java5的泛型,所以需要大量使用強制類型轉換,比如:
Employee employee = (Employee)sqlMapper.queryForList("getEmployee", 5);
//...and...
List employees = sqlMapper.queryForList("listAllEmployees");
但是在IBatis3中,方法改變成:
MapperFactory factory = someConfiguration.buildMapperFactory();
EmployeeMapper employeeMapper = factory.getMapper (EmployeeMapper.class);
Employee emp = empMapper.getEmployee(5);
//...and...
List<Employee> employees = empMapper.listAllEmployees();
所以IBatis3至少需要使用Java5以上的版本。上面代碼中,EmployeeMapper是一個自定義的接口(注意,開發人員只需要定義一個接口,不需要提供具體的實現)
public interface EmployeeMapper {
Employee getEmployee (int employeeId);
List<Employee> listAllEmployees();
}
這樣就行了,IBatis會自動為你生成接口的具體實現。是不是感覺有點酷?