iBatis入门例子
?
- package?com.ctgusec.zhupan; ?? ??
- import?java.sql.SQLException; ?? import?java.util.List; ??
- ?? import?com.ctgusec.zhupan.model.User; ??
- import?com.ibatis.sqlmap.client.SqlMapClientBuilder; ?? ??
- /** ? ?*? ?
- ?*?@author?zhupan ? ?*/??
- public?class?ExampleMain?{ ?? ??
- ????public?static?void?update()?{ ?? ????????//首先初始化iBatis获得一个SqlMapClient对象 ??
- ????????String?resource?=?"com/ctgusec/zhupan/maps/SqlMapConfig.xml"; ?? ????????com.ibatis.sqlmap.client.SqlMapClient?sqlMap?=?null; ??
- ????????try?{ ?? ????????????java.io.Reader?reader?=?com.ibatis.common.resources.Resources ??
- ????????????????????.getResourceAsReader(resource); ?? ????????????sqlMap?=?SqlMapClientBuilder.buildSqlMapClient(reader); ??
- ????????}?catch?(Exception?e)?{ ?? ????????????e.printStackTrace(); ??
- ????????} ?? ????????//?sqlMap系统初始化完毕,开始执行update操作 ??
- ????????try?{ ?? ????????????sqlMap.startTransaction(); ??
- ????????????User?user?=?new?User(); ?? ????????????user.setId(new?Integer(1)); ??
- ????????????user.setName("zhupan"); ?? ????????????user.setSex(new?Integer(1)); ??
- ????????????sqlMap.update("updateUser",?user); ?? ????????????sqlMap.commitTransaction(); ??
- ????????}?catch?(SQLException?e)?{ ?? ????????????System.out.println(e.getMessage()); ??
- ????????}?finally?{ ?? ????????????try?{ ??
- ????????????????sqlMap.endTransaction(); ?? ????????????}?catch?(SQLException?e)?{ ??
- ????????????????e.printStackTrace(); ?? ????????????} ??
- ????????} ?? ????} ??
- ????public?static?List?getUser()?{ ?? //??????首先初始化iBatis获得一个SqlMapClient对象 ??
- ????????String?resource?=?"com/ctgusec/zhupan/maps/SqlMapConfig.xml"; ?? ????????com.ibatis.sqlmap.client.SqlMapClient?sqlMap?=?null; ??
- ????????List?user=null; ?? ????????try?{ ??
- ????????????java.io.Reader?reader?=?com.ibatis.common.resources.Resources ?? ????????????????????.getResourceAsReader(resource); ??
- ????????????sqlMap?=?SqlMapClientBuilder.buildSqlMapClient(reader); ?? ????????}?catch?(Exception?e)?{ ??
- ????????????e.printStackTrace(); ?? ????????} ??
- ????????//?sqlMap系统初始化完毕,开始执行getAllUser操作 ?? ????????try?{ ??
- ????????????sqlMap.startTransaction();?????????????? ?? ????????????user=sqlMap.queryForList("getAllUser",?null); ??
- ????????????sqlMap.commitTransaction(); ?? ????????}?catch?(SQLException?e)?{ ??
- ????????????System.out.println(e.getMessage()); ?? ????????}?finally?{ ??
- ????????????try?{ ?? ????????????????sqlMap.endTransaction(); ??
- ????????????}?catch?(SQLException?e)?{ ?? ????????????????e.printStackTrace(); ??
- ????????????} ?? ????????} ??
- ????????return?user; ?? ????} ??
- ????public?static?void?main(String[]?args)?{ ?? ????????update(); ??
- ????????List?user=getUser();???? ?? ????????for(int?i=0;i
- ????????{ ?? ????????????System.out.println(((User)user.get(i)).getName()); ??
- ????????} ?? ??
- ????} ?? }??
总结:iBatis确实简单灵活,上手容易,代码很少,配置稍嫌复杂。动态SQL的确是个强点,熟悉后感觉很不错。iBatis中所有的DAO方法都只传一个值对象,复杂查询当然也不例外。另外对常见的1:1,1:N关系的支持不如Hibernate。使用iBatis2.0和1.0有较大区别,主要体现在配置文件上,iBatis2.0新增了DAO框架,不需要Spring提供的DAO也能很方便地实现DAO模式。持久层使用了iBatis后,团队中以前乱七八糟的jdbc包装不见了,大家的编码风格统一了,可以集中精力进行业务组件的编写!?
源文件下载见附件
Ps :结合《 ibatis 开发指南》会更容易明白!
ibatisJavaTest.rar (1.5 MB)原文地址:http://www.iteye.com/topic/26433
1 楼 oppovaan 2010-04-30 学习了,很好的例子