iBatis 3最佳实践 博客分类: java iBATISjava
程序员文章站
2024-03-25 11:45:34
...
这两天把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吧:
然后传统的做法就是:
现在还可以这样做:
1、先根据SQL Map写一个Mapper Interface:
方法名字要跟SQL Statement的id一致,参数按顺序来就行,注意,现在这个Interface还是得自己写的
2、然后就可以这样来用:
XML写SQL,然后用Mapper Interface写程序,我认为这是最好的用法了,现在就期待有人能写个SQL Map >>> Mapper Interface的工具了
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的工具了