IBatis3臨近發(fā)布正式版了
Posted on 2010-01-15 20:49 云自無(wú)心水自閑 閱讀(2375) 評(píng)論(4) 編輯 收藏 所屬分類: Java 、心得體會(huì) 、數(shù)據(jù)庫(kù) 、iBatisIBatis3的Beta8版本已經(jīng)發(fā)布了,在官方網(wǎng)站上聲稱目前的版本已經(jīng)非常穩(wěn)定,只有4個(gè)已知的問(wèn)題,其中2個(gè)是非功能性的。作者宣稱,這樣的狀況使它對(duì)于近期發(fā)布GA版本充滿信心。
那么IBatis3與IBatis2相比,究竟變化在哪里呢?
最重要的變化是IBatis3中引入了接口綁定(Interface Binding)的概念。在IBatis2中,沒(méi)有應(yīng)用Java5的泛型,所以需要大量使用強(qiáng)制類型轉(zhuǎn)換,比如:
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是一個(gè)自定義的接口(注意,開(kāi)發(fā)人員只需要定義一個(gè)接口,不需要提供具體的實(shí)現(xiàn))
public interface EmployeeMapper {
Employee getEmployee (int employeeId);
List<Employee> listAllEmployees();
}
這樣就行了,IBatis會(huì)自動(dòng)為你生成接口的具體實(shí)現(xiàn)。是不是感覺(jué)有點(diǎn)酷?
那么IBatis3與IBatis2相比,究竟變化在哪里呢?
最重要的變化是IBatis3中引入了接口綁定(Interface Binding)的概念。在IBatis2中,沒(méi)有應(yīng)用Java5的泛型,所以需要大量使用強(qiáng)制類型轉(zhuǎn)換,比如:
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是一個(gè)自定義的接口(注意,開(kāi)發(fā)人員只需要定義一個(gè)接口,不需要提供具體的實(shí)現(xiàn))
public interface EmployeeMapper {
Employee getEmployee (int employeeId);
List<Employee> listAllEmployees();
}
這樣就行了,IBatis會(huì)自動(dòng)為你生成接口的具體實(shí)現(xiàn)。是不是感覺(jué)有點(diǎn)酷?