`
zyl
  • 浏览: 486270 次
社区版块
存档分类
最新评论

ibatis 开始之旅

    博客分类:
  • ORM
阅读更多
    用了很久hibernate ,突然想换个别的orm 工具,当然在orm领域中,hibernate是老大。看了一下ibatis,发现如果对于crud操作不是很多的系统来说,是个不错的选择,尤其是适合 那些对sql和性能热衷的开发者。综合来说ibatis不能算orm工具,只能算个半成品。不过比起直接用jdbc写,那还是方便多了。主要的好处是分离 了sql和代码,如果你想追求性能,那么sql是你很好的利器,当然ibatis的缓存也不错。比起hibernate,ibatis就简单多了,估计也 就3天能够基本掌握了,这大大减少了学习成本。
    说了那么多废话,下面开始正题,通过一个简单的实例开始ibatis之旅,文章大部分参考网上的ibatis 开发指南一文。
    主要的jar:ibatis 2.3.0,spring 2.0.1,log4j 1.2.9,commons-logging 1.0.4,hsqldb 1.8.0
    ibatis实例配置:
xml 代码
 
  1. <sqlMapConfig>  
  2. -- 事务采用spring 管理 -->  
  3. <sqlMap resource="org/esoft/bo/xml/Account.xml"/>  
  4. sqlMapConfig>      
创建POJO对象:

 
java 代码
 
  1. package com.esoft.bo;  
  2.   
  3. public class Account {  
  4.   
  5.     private String emailAddress;  
  6.   
  7.     private String firstName;  
  8.   
  9.     private int id;  
  10.   
  11.     private String lastName;  
  12.   
  13.     public String getEmailAddress() {  
  14.         return emailAddress;  
  15.     }  
  16.   
  17.     public String getFirstName() {  
  18.         return firstName;  
  19.     }  
  20.   
  21.     public int getId() {  
  22.         return id;  
  23.     }  
  24.   
  25.     public String getLastName() {  
  26.         return lastName;  
  27.     }  
  28.   
  29.     public void setEmailAddress(String emailAddress) {  
  30.         this.emailAddress = emailAddress;  
  31.     }  
  32.   
  33.     public void setFirstName(String firstName) {  
  34.         this.firstName = firstName;  
  35.     }  
  36.   
  37.     public void setId(int id) {  
  38.         this.id = id;  
  39.     }  
  40.   
  41.     public void setLastName(String lastName) {  
  42.         this.lastName = lastName;  
  43.     }  
  44.   
  45. }      

映射文件,感觉比较的麻烦。以后有机会的话一定自动生成此文件,尤其现在jpa当道。
 
xml 代码
 
  1. <sqlMap namespace="Account">  
  2.      
  3.     <typeAlias alias="Account" type="com.esoft.bo.Account"/>  
  4.   
  5.     <resultMap id="AccountResult" class="Account">  
  6.         <result property="id" column="ACC_ID"/>  
  7.         <result property="firstName" column="ACC_FIRST_NAME"/>  
  8.         <result property="lastName" column="ACC_LAST_NAME"/>  
  9.         <result property="emailAddress" column="ACC_EMAIL"/>  
  10.     </resultMap>  
  11.   
  12.     <select id="selectAccountById" parameterClass="int" resultClass="Account">  
  13.         select ACC_ID as id, ACC_FIRST_NAME as firstName, ACC_LAST_NAME as lastName,  
  14.         ACC_EMAIL as emailAddress from ACCOUNT where ACC_ID = #id# </select>  
  15.      
  16.     <insert id="insertAccount" parameterClass="Account"> insert into ACCOUNT ( ACC_ID,  
  17.         ACC_FIRST_NAME, ACC_LAST_NAME, ACC_EMAIL) values ( #id#, #firstName#,  
  18.         #lastName#, #emailAddress# ) </insert>  
  19.      
  20.     <update id="updateAccount" parameterClass="Account"> update ACCOUNT set  
  21.         ACC_FIRST_NAME = #firstName#, ACC_LAST_NAME = #lastName#, ACC_EMAIL =  
  22.         #emailAddress# where ACC_ID = #id# </update>  
  23.      
  24.     <delete id="deleteAccountById" parameterClass="int"> delete from ACCOUNT where  
  25.         ACC_ID = #id# </delete>  
  26.       
  27. </sqlMap>     


spring 配置:
 
xml 代码
 
  1. ...  
  2. <bean id="dataSource"  
  3.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  4.         <property name="driverClassName">  
  5.             <value>${jdbc.driverClassName}<!---->value>  
  6.         <!---->property>  
  7.         <property name="url">  
  8.             <value>${jdbc.url}<!---->value>  
  9.         <!---->property>  
  10.         <property name="username">  
  11.             <value>${jdbc.username}<!---->value>  
  12.         <!---->property>  
  13.         <property name="password">  
  14.             <value>${jdbc.password}<!---->value>  
  15.         <!---->property>  
  16.     <!---->bean>  
  17.          <bean id="transactionManager"  
  18.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  19.         <property name="dataSource" ref="dataSource"/>  
  20.      <!---->bean>  
  21.       
  22.        <bean id="sqlMapClient"  
  23.         class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  24.         <property name="dataSource" ref="dataSource"/>  
  25.         <property name="configLocation">  
  26.             <value>SqlMapConfig.xml<!---->value>  
  27.         <!---->property>  
  28.       <!---->bean>  
  29.       <bean id="accountDao" class="org.esoft.dao.AccountDaoImpl">  
  30.              <property name="sqlMapClient" ref="sqlMapClient"/>  
  31.       <!---->bean>       
 
    

主要的代码:
java 代码
 
  1. public class AccountDaoImpl  
  2.         extends SqlMapClientDaoSupport {  
  3.     public PK save(Account obj) {  
  4.         return (PK) getSqlMapClientTemplate().insert("insertAccount", obj);  
  5.     }  
  6.     public void update(Accountobj) {  
  7.         getSqlMapClientTemplate().update("updateAccount", obj);  
  8.     }  
  9.      public void delete(Account obj) {  
  10.         getSqlMapClientTemplate().delete(  
  11.                 "deleteAccountById",  
  12.                 obj.getPk());  
  13.     }  
  14.     public Account get(PK primaryKey) {  
  15.         return (Account) getSqlMapClientTemplate().queryForObject(  
  16.                 "selectAccountById",  
  17.                 primaryKey);  
  18.     }  
  19. }  

分享到:
评论
3 楼 daoger 2007-01-13  
与hibernate相比,ibatis属于是半自动的;可以说他就是SQL+XML,不过它没有抛弃SQL语言的灵活易学性,并且语句映射也比较简单,容易上手,还有通过可插入的缓存策略,SQL Maps提供了对缓存查询结果的支持。
项目中如果没有人熟悉hibernate,ibatis就是很好的选择啊!
2 楼 shrpcn 2007-01-13  
IBATIS 自由度比较好,
对于熟悉SQL的程序员比较适合。
应该将SQL升级为编程语言来认同,不需要回避SQL.
1 楼 piaoling 2007-01-11  
以前,感觉,相对其它的orm工具简单多了

相关推荐

    java+ibatis实例教程

    Java+MyBatis 实例教程 Java 和 MyBatis 是两个在软件开发中广泛应用的技术,尤其是在构建企业级 Web 应用程序时。Java 是一种面向对象的编程语言,以其跨平台性和强大...祝你在 Java+MyBatis 的学习之旅中收获满满!

    ibatis in action

    《iBATIS in Action》是一本专注于iBATIS框架的英文版专著,它为读者提供了一条深入了解...而压缩包内的"IBATIS in Action - Manning.pdf"正是这本书的电子版,它将带你走进iBATIS的世界,开启你的持久层框架学习之旅。

    强烈推荐的 iBATIS 书籍

    iBATIS 是一款著名的开源Java持久层框架,它在2005年由Mike...对于那些热衷于源码分析和工具研究的标签爱好者,这本书将是一次深度探索之旅,帮助他们深入理解iBATIS 的内部工作原理,并提升其在Java开发中的技能水平。

    淘宝实习笔记--webx学习之旅

    【淘宝实习笔记--webx学习之旅】这篇笔记主要记录了作者在淘宝实习期间关于Webx框架的学习和理解。Webx是一个用于构建企业级Web应用程序的框架,它在淘宝内部广泛使用。以下是一些核心知识点: 1. **iBATIS**:...

    一个程序员的自省(博客园)--超级推荐

    作者通过自己的F#探险之旅,整理了相关教程,帮助初学者快速入门,并对比了F#与C#的差异,强调了函数式编程的优势。 【Visual Studio插件增强开发体验】 Visual Studio的插件生态系统极大地丰富了IDE的功能,使...

    Spring in Action(第2版)中文版

    第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结 第2章基本bean装配 ...

    Spring in Action(第二版 中文高清版).part2

    第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 ...

    Spring in Action(第二版 中文高清版).part1

    第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 ...

    Mybatis-Spring1.0.2中文版说明文档

    ### 章节二:开始 Mybatis-Spring 之旅 这部分可能涉及如何设置项目,配置Spring和Mybatis的集成,以及如何创建和管理SqlSession和Mapper接口。 ### 章节三:SqlSessionFactoryBean SqlSessionFactoryBean是...

    通向架构师的道路.rar

    6. **通向架构师的道路(第二十四天)之Oracle性能调优-朝拜先知之旅.docx** Oracle是广泛使用的数据库系统,性能调优是提升数据库效率的关键。文档可能涵盖了索引优化、查询优化、存储结构调整等方法,帮助读者深入...

    spring in action英文版

    例如,第1章“开始Spring之旅”介绍了使用Spring的原因,包括J2EE开发者的日常工作以及Spring提供的承诺。此外,Spring的反向控制(IoC)和面向切面编程(AOP)是Spring框架的核心特性,而这一部分也详细解释了如何...

    Flex技术入门之如何创建flex的web工程

    【Flex技术入门:创建Web工程详解】 Flex技术是Adobe公司为了解决Flash开发难题而推出的一种专门面向程序开发人员的...在开始Flex开发之旅之前,了解其优缺点和创建Web工程的基本流程,将有助于你更好地掌握这项技术。

    SpringBoot整合Mybatis初学者,简单实用

    在IT行业中,SpringBoot和Mybatis是两个非常流行的框架,它们分别用于简化Spring应用的开发和处理数据库操作。本文将详细介绍如何将这两个框架...希望这个简明教程能对初学者有所帮助,开启愉快的Java Web开发之旅。

    技术分享之Web服务后台开发框架升级:从SpringMVC+Hibernate到SpringBoot+Mybatis

    MyBatis是一个优秀的持久层框架,其前身是Apache的iBatis项目。它允许开发者以声明式的方式处理SQL查询,并支持存储过程和高级映射。以下是MyBatis的关键特性: - **最新版本**:...

Global site tag (gtag.js) - Google Analytics