`
sd6292766
  • 浏览: 102652 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ibatis初学的一个例子,新手可以尽快上手。

阅读更多
    IBATIS是优秀的半ORM框架,原先一直在用HIBERNATE,不过对HIBERNATE过于强大但问题多多的ORM方案十分反感。遂翻阅了一下IBATIS。自己写了一个例子,不用SPRING+STRUTS。

    首先去ibatis.apache.org下载最新的2.X的ibatis包,我用的是JAR包,没有用ibator插件调试安装。本地环境,ORACLE数据库,JDK1.6。

    ibatis的核心是sqlmap框架。
   
    新建一个JAVA工程即可,导入ibatisJAR包。我的是ibatis2.3.4-768.jar。新建一个XML文件,sql-map-config.xml,这个文件用于配置配置JDBC事务管理。

    sql-map-config.xml
   
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMapConfig
        PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
        "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
    <sqlMapConfig>
        <settings
          cacheModelsEnabled="true"    <!--全局性地启用或禁用SqlMapClient的所有缓存model。调试程序时使用-->
          enhancementEnabled="true"   <!--全局性地启用或禁用运行时字节码增强,以优化访问Java Bean属性的性能,同时优化延迟加载的性能。-->
          lazyLoadingEnabled="true"  <!--全局性地启用或禁用SqlMapClient的所有延迟加载。调试程序时使用。-->
          maxRequests="32"    <!--同时执行SQL语句的最大线程数-->
          maxSessions="10"    <!--同一时间内活动的最大session数-->
          maxTransactions="5"   <!--同一时间内允许的最大SqlMapClient.startTransaction()的线程数-->
          useStatementNamespaces="false"
        />
        <transactionManager type="JDBC" >    <!--JDBC事务管理器-->
        <dataSource type="SIMPLE">
      <propertyname="JDBC.Driver"                                     value="oracle.jdbc.driver.OracleDriver"/>
      <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@192.168.0.16:1521:orcl"/>
      <property name="JDBC.Username" value="procczg"/>
      <property name="JDBC.Password" value="procczg"/>
    </dataSource>
  </transactionManager>
  <sqlMap resource="ibatis/Taxpayer.xml" />    <!--这是引用所有的SQL配置文件,ibatis在此处声明要调用到的SQL文件-->
</sqlMapConfig>

    



    我们在表里有一张数据表 :
        create table TAXPAYER
(
  ID       NUMBER(10),
  NSR_NAME VARCHAR2(256),
  ORG_ID   NUMBER,
  NSRSBH   VARCHAR2(20),
  GXSJ     VARCHAR2(20)
)

数据请自行录入。


taxpayer对应的JAVABEAN:
   
        public class Taxpayer {


	/** 业务字段 */
	private int id;
	private String nsr_name;
	private String org_id;
	private String nsrsbh;
	private String gxsj;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNsr_name() {
		return nsr_name;
	}
	public void setNsr_name(String nsr_name) {
		this.nsr_name = nsr_name;
	}
	public String getOrg_id() {
		return org_id;
	}
	public void setOrg_id(String org_id) {
		this.org_id = org_id;
	}
	public String getNsrsbh() {
		return nsrsbh;
	}
	public void setNsrsbh(String nsrsbh) {
		this.nsrsbh = nsrsbh;
	}
	
	public String getGxsj() {
		return gxsj;
	}
	public void setGxsj(String gxsj) {
		this.gxsj = gxsj;
	}

}

    



    接下来,我们新建一个taxpayer.xml,所有对taxpayer表的SQL操作,全部写在这个文件里,
     taxpayer.xml:
   
        <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
  PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
  "http://www.ibatis.com/dtd/sql-map-2.dtd">
  
  
  
<sqlMap namespace="Taxpayer">
	
   
      <statement id="getTaxpayer"  resultClass="ibatis.Taxpayer">
		select * from taxpayer where id = #id#  
    and org_id = #org# and nsr_name like '%$nsrmc$%'
      </statement>

</sqlMap>

    
 

    这里写了一个需要有3个条件的查询,并且把条件适当复杂一下,用个LIKE条件。注意,这个SQL配置里面,我们用到了3个参数。下面我们要在调用该SQL的时候,分别给这3个参数赋值。阅读了一下ibatis的中文手册,我们可以采用MAP的方式赋值。下面开始写测试类,需要调用ibatis库下的sqlMap框架类来实现:
   
    
    import java.io.IOException;
    import java.io.Reader;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import com.ibatis.common.resources.Resources;
    import com.ibatis.sqlmap.client.SqlMapClient;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;


    public class IbatisTest {

	/**
	 * @param args
	 * author by 刘峰
	 * 2010-6-22下午04:47:21
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		SqlMapClient s = null;
		try {
			Reader reader = Resources.getResourceAsReader("ibatis/sql-map-config.xml");
			s = SqlMapClientBuilder.buildSqlMapClient(reader);
			
			Map mParameter = new HashMap();
			mParameter.put("id", new Integer(10533));
			mParameter.put("org", new Integer(16));
			mParameter.put("nsrmc", "纳税人名称");
			Taxpayer t = (Taxpayer)s.queryForObject("getTaxpayer", mParameter);
						
			System.out.println(t.getId());
			System.out.println(t.getNsr_name());
			System.out.println(t.getNsrsbh());
			System.out.println(t.getOrg_id());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

    


    赋值时候,Integer,String, Character等常用的对象类型写到MAP里面去即可。不过Ibatis对Long的支持并不太好。本人是初学,望有知情者告知一下Long的支持情况。

    新增,修改,删除操作请自行完成。

    使用后感想,个人用下来,ibatis等于把业务中的代码部分和数据库操作部分完好地分离开来。使开发过程中的层次清晰。避免了在JAVA里出现SQL语句这样维护极其麻烦的处理方式。同时很好的支持存储过程,动态拼SQL等一些在实际应用中经常碰到的情况。
    缺点:由于是半orm的东西,对于一张表的操作,定义非常繁琐,JAVABEAN和IBATIS里SQL的配置文件其实是没有任何关系。导致的问题是,如果客户在表里新增一个字段,并且要把这个字段作为查询字段,我们不光要改JAVA文件,添加属性,同时还要去改IBATIS的相应SQL文件,相应的查询、新增、修改,只要涉及到的,全部都要统一地做修改。这对开发人员来说,工作量极其繁琐,而且很容易报错。HIBERNATE不存在这个问题,但是HIBERNATE的性能实在有待商榷。

   
分享到:
评论

相关推荐

    第一个ibatis例子

    通过这个例子,学习者可以理解如何配置Ibatis,编写Mapper接口和XML文件,以及如何在实际应用中使用它们。随着对Ibatis的深入学习,可以进一步了解动态SQL、结果映射、缓存机制等高级特性,以实现更复杂的数据访问...

    原创的一个iBatis例子

    如何使用这个例子: 1、下载后解压缩 2、导入到Eclipse中 3、运行test/Test.java,看看结果 4、删除org及其下的三个目录及文件 5、在ibator/config/ibatorConfig.xml中的右键菜单,选择Generate iBATIS Artifacts 5...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...

    ibatis java初学例子

    本程序是一个简单ibatis(版本ibatis2.3.4.726)例子, 里面包含单表增,删,改,查。 SimpleExample.java 包含程序与测试. 我用到是sqlServer(其他的数据库,只需更改sqlMapConfig.xml里面的配置就行了)数据库, ...

    ibatis的一个小例子

    【标题】:“ibatis的一个小例子” 在Java Web开发领域,Ibatis(现已被更名为MyBatis)是一款广泛使用的...同时,`.classpath`和`.project`文件揭示了项目是如何组织和构建的,这对于理解和复现这个例子至关重要。

    Ibatis(中文文档,还有一个调好的例子)

    iBatis是一个O/R Mapping解决方案, iBatis最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBatis是能满足你的要求又足够灵活的最简单的解决方案。下面我们看一个最简单的入门例子,是《ibatis 开发...

    spring+ibatis+ehcache整合例子

    这个"spring+ibatis+ehcache整合例子"是一个完整的示例项目,展示了如何将这三个框架无缝集成到一个基于MySQL数据库的应用中。下面将详细介绍这三个框架及其整合的关键点。 **Spring框架** Spring是一个全面的企业...

    ibatis2.3例子代码

    通过学习这个例子,你可以了解到如何配置iBatis,如何编写SQL映射文件,以及如何在Java代码中使用SqlSession和Mapper接口来执行SQL语句。这对于理解和掌握iBatis框架以及数据库操作具有实际指导意义。

    Ibatis入门例子,Ibatis教程

    在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org....

    iBATIS初学经验.doc

    在实际使用中,我们需要创建一个iBATIS的配置文件(如:SqlMapConfig.xml),在这个文件中定义数据源、事务管理器等基本信息。接着,我们需要为每个数据库操作创建一个独立的XML文件(例如:UserMapper.xml),在这...

    ibatis简单例子

    这个"ibatis简单例子"旨在帮助初学者理解Ibatis的基本用法,包括配置文件的设置、SQL映射文件的编写以及如何在Java代码中调用这些映射的SQL。通过实践这两个小例子,可以深入理解Ibatis如何将数据库操作与业务逻辑...

    使用的iBatis 简单例子

    iBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架,将SQL语句与Java代码分离,使得开发者能够更灵活地控制数据库操作。...通过学习和理解这个例子,开发者可以更好地掌握iBatis的工作原理和使用方式。

    ibatis中iterate的例子

    举个例子,假设我们有一个用户ID的列表,我们需要查询这些ID对应的所有用户信息,可以这样配置iBatis的映射文件: ```xml SELECT * FROM users WHERE id IN (" property="ids" open="," close=")"&gt; #{ids[index...

    ibatis简单CRUD例子

    **Ibatis简介** Ibatis,又称为MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及...通过学习和实践这个简单的CRUD例子,开发者可以快速掌握Ibatis的基本操作,并将其应用到实际项目中,提升开发效率。

    ibatis 2 and spring 例子

    标题 "ibatis 2 and spring 例子" 指向的是一个...这个例子对于初学者来说非常有价值,因为它展示了如何将两个流行框架结合起来,提升开发效率。如果你对iBatis 2与Spring的集成感兴趣,建议查阅该博文以获取更多信息。

    一个Ibatis的详细例子

    通过这个详细的Ibatis案例,初学者可以了解并掌握如何在实际项目中运用Ibatis,从配置到实践,一步步体验数据库操作的便捷性。同时,通过阅读源码,还能深入理解Ibatis的工作原理,提升自己的编程技能。

    ajax和ibatis的综合应用例子

    这个例子是一个很好的学习资源,可以帮助开发者理解如何在实际项目中整合Ajax和iBatis,提升Web应用的性能和用户体验。通过分析这些文件,我们可以深入了解两者的配合使用,以及在具体场景下的实现细节。

    ibatis 第一个程序

    这个"iBatis 第一个程序"的学习路径将帮助初学者快速掌握 iBatis 的基本用法,为后续更复杂的应用场景打下基础。通过阅读提供的博客链接,读者可以深入理解 iBatis 的核心概念并动手实践,从而更好地掌握这个强大的...

    ibatis学习完整实例,例子

    Ibatis,作为一个轻量级的持久层框架,以其灵活、易用的特点在Java开发领域广泛应用。本教程旨在通过一个完整的实例——"ibatistest2"项目,帮助开发者深入理解和掌握Ibatis的核心功能与实践技巧。 首先,Ibatis的...

    Ibatis例子,很适合初学者

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写...在提供的压缩包文件"IbatisTest"中,可能包含了一个简单的Ibatis示例项目,可以用来动手实践,加深理解。

Global site tag (gtag.js) - Google Analytics