这两天把iBatis 3 beta 5 down下来鼓捣了一下,总结一下自己觉得最好的用法,有玩过的朋友欢迎一起来交流。
iBatis 3即可以在XML里写SQL,还支持用Annotation写,不过官方文档也不推荐用Annotation,java的Annotation弱了一点,写写简单的SQL还可以,如果SQL比较复杂,就麻烦了,文档里倒是提到C#的Attribute比较强,iBatis.net用户比较有福了,不过即使如此,我还是倾向于SQL写XML里比较好。
我觉得i3最激动人心的一点是Mapper Interface,先来一个SQL Map吧:
<mapper namespace="com.je.data.BookMapper">
<select id="getBookByISBN" parameterType="String" resultType="com.je.domain.Book">
select * from book where ISBN = #{ISBN}
</select>
<insert id="newBook" parameterType="com.je.domain.Book" flushCache="true" />
</mapper>
然后传统的做法就是:
Book book = (Book)session.selectOne("com.je.data.BookMapper.getBookByISBN", "123456789");
……
现在还可以这样做:
1、先根据SQL Map写一个Mapper Interface:
package com.je.data;
public interface BookMapper {
Book getBookByISBN(String ISBN);
newBook(Book book);
}
方法名字要跟SQL Statement的id一致,参数按顺序来就行,注意,现在这个Interface还是得自己写的
2、然后就可以这样来用:
BookMapper mapper = session.getMapper(BookMapper.class);
Book book = mapper.getBookByISBN("324567189");
……
mapper.newBook(book);
XML写SQL,然后用Mapper Interface写程序,我认为这是最好的用法了,现在就期待有人能写个SQL Map >>> Mapper Interface的工具了