`

iBATIS入门案例

阅读更多

       笔者最近和后台开发、数据库打交道不少,自然ORM这块的东西也是应用频繁。笔者和很多朋友一样原来也是一直学习和使用Hibernate,毕竟Hibernate的大名还是要响亮的多。然而金无足赤,人无完人,每一款框架都有自己的优点和缺点,喜欢Hibernate的可以继续去喜欢,今天的主角是iBATIS

         iBATIS,目前已经更名为MyBatis,从命名上更加亲切,但对于iBATIS的使用者来说却相差不大,笔者今天还是来说iBATIS,并从实际开发的绝度谈下自己的使用经验和心得体会。

         想跟大家分享以下内容:iBATIS的基本使用规则、iBATIS如何调用存储过程、如何使用IBATOR插件来简化代码以及使用插件的意义。开篇还是俗一点从如何使用来讲,一步一步的深入,先入门再跟大家提要点、难点。

         iBATIS基础实例:

         通过本实例我们完成以下事情:

         从数据库里读取Student表里的所有数据。

         环境准备:

                   iBATIS  JAR        笔者这里使用的是2.3.4.726JAR

                   MYSQL_Connector_JAVA         JAR               注:不同的数据库使用与其对应的JAR

                   APACHE_DBCP                  JAR                                  注:不使用也无妨

         配置文件:


<?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"
		enhancementEnabled="true"
		lazyLoadingEnabled="true"
		errorTracingEnabled="true"
		maxRequests="32"
		maxSessions="10"
		maxTransactions="5"
		useStatementNamespaces="false" />
	<transactionManager type="JDBC">
			<dataSource type="DBCP">
				<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
	            <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/DBExample"/>
	            <property name="JDBC.Username" value="root"/>
	            <property name="JDBC.Password" value="123456"/>
	            <property name="Pool.MaximumActiveConnections" value="80"/>
	            <property name="Pool.MaximumIdleConnections" value="40"/>
	            <property name="Pool.MaximumWait" value="60000"/>
	            <property name="Pool.LogAbandoned" value="false"/>
	            <property name="Pool.RemoveAbandoned" value="true"/>
	            <property name="Pool.RemoveAbandonedTimeout" value="50000"/>
			</dataSource>
	</transactionManager>
	<!-- 
		JNDI方式
		<transactionManager type="JDBC" >
			<dataSource type="JNDI">
			<property name="DataSource"
			value="java:comp/env/jdbc/ibatistest"/>
			</dataSource>
		</transactionManager>
	 -->
	<sqlMap resource="com/example/sqlMap/student.xml" />
</sqlMapConfig>

 基本属性解释:


	cacheModelsEnabled="true"	<!-- 是否使用缓存机制 -->
	enhancementEnabled="true"	<!--  是否针对POJO 启用字节码增强机制以提升 getter/setter的调用效能,避免使用Java Reflect 所带来的性能开销。同时这也为Lazy Loading 带来了极大的性能  提升。 -->
	lazyLoadingEnabled="true"	<!-- 是否启用错误日志,在开发期间建议设为"true"以方便调试  -->
	errorTracingEnabled="true"	<!-- 是否启用延迟加载机制 -->
	maxRequests="32"			<!-- 最大并发请求数(Statement 并发数) -->
	maxSessions="10"			<!-- 最大Session 数。即当前最大允许的并发SqlMapClient 数。maxSessions 设定必须介于 maxTransactions 和maxRequests之间 -->			
	maxTransactions="5"			<!-- 最大并发事务数 -->
	useStatementNamespaces="false" <!-- 是否使用Statement命名空间。 -->

  映射文件:


<?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="stuExampleMap">
	<typeAlias alias="student" type="com.huan.bean.Student"/>	<!--指定别名-->
	<select id="getAllStudent" resultClass="student">
		<![CDATA[
		select * from student
		]]>
	</select>
	<select id="selectStudentByName" parameterClass="java.lang.String" resultClass="student">
		<![CDATA[
		select * from student where stuname = #stuname#
		]]>
	</select>
</sqlMap>

 POJO


         POJO类因为篇幅我就省略了,相信大家这个都知道的。

 测试代码:


Reader reader = null;
try {
			/* 获得ibatis配置文件 */
			reader = 	Resources.getResourceAsReader("IbatisConfig.xml");
} catch (IOException e) {
	e.printStackTrace();
}
	SqlMapClient sqlMapClient = SqlMapClientBuilder
	.buildSqlMapClient(reader);
	SqlMapSession session = sqlMapClient.openSession();
try {
	Student stu = (Student) session.queryForList(
	"stuExampleMap.getAllStudent");//这里我们通过调用SQLMAP里的ID来执行相应的SQL,前面是命名空间
	System.out.println(stu.getStuname() + " " + stu.getStuid());
} catch (SQLException e) {
	e.printStackTrace();
}

  项目结构:

 

 

 

      OK,相信很多朋友都顺利运行成功了,从这部分代码中我们可以看出SqlMapClientiBATIS中的核心组件,是提供数据操作的基本平台。同时SqlMapClient提供了众多的数据操作方法并且基本上是以SQL类型分别命名:INSERTSELECTUPDATEDELETE。还有一些常用的方法queryForPaginatedList()分页查询queryForMap()基于map的批量查询。

 

         当然我们也看出iBATIS之所以是一个半自动的ORM框架是因为它的很多操作都是用SQL语句写出来的,每一步的SQL操作对应的都是一个SQL语句。那么在使用iBATIS时一项很重要的工作就成了编写SQL代码。就拿我们上面的例子来说,我们要取到所有的学生那么我们就必须写我们熟悉的 SELECT * FROM student 。编写SQL语句,这就是使用iBATIS的一项重要工作,这就是不同于Hibernate的地方,有人说使用iBATIS代码非常多那么很大一部分就是在写SQL语句。这么写肯定是有优势的,试想下这么一种情况。公司因业务需要急需招一批新人来承担新增加的业务,去完成新业务的代码,而leader并不能保证这么几位新人的水平相差无几,再加上每个人都有自己的代码风格。项目的管理和进度控制就显得很棘手。如果leader选用的是Hibernate,那么结果就比较悲剧。由于新人对Hibernate的驾驭一般都是半斤八两,就会造成运用不熟、代码烂、进度不齐等情况。很有可能就因为这些原因耽误了项目的进度,那么使用iBATIS会将所有数据库操作规范到编写SQL和配置文件上,这样既有固定的SQL规范又有统一的使用方式又防范了参差不齐的技术问题引起的.....(你懂的),进度自然便于管理。

这样iBATIS的基础实例我们已经完成了,下一步我们来看如何使用iBATIS调用存储过程。

 

PS:个人感觉iBATIS框架的入门还是比较简单的,会用JDBC就会使用iBATIS,因此长话短说,有什么地方说的不好的或者说错的(这个不容原谅)还请提出,不胜感激!

如需转载请务必保留出处,感谢配合!

  • 大小: 4.8 KB
分享到:
评论

相关推荐

    ibatis入门案例程序

    【标题】"ibatis入门案例程序"涉及到的核心知识点是MyBatis框架的使用,这是一个流行的Java持久层框架,用于简化数据库操作。MyBatis通过将SQL语句与Java代码分离,提高了开发效率,并提供了灵活的映射机制,使得...

    Ibatis 入门经典 实例

    《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...

    ibatis入门学习经典案例

    【标签】"ibatis入门案例"明确了这个案例是面向初级用户的,它将涵盖MyBatis的基本概念,如SQL映射文件、Mapper接口、事务管理等,并通过实际的数据库操作展示如何使用MyBatis进行数据存取。 【压缩包子文件的文件...

    ibatis小案例

    今天刚做的ibatis入门小案例,适合初学者学习使用.我使用的是oracle,如果下载是使用的oracle的DataBase只需要创建一个学生表就OK了,如果是其他数据库还需要修改SqlMap.properties的数据库的连接语句.

    ibatis入门详细教程(结合案例)

    来自网络,这里免费分享给大家。。ibatis入门详细教程(结合案例),本人看过值得一看

    Ibatis 入门小例子

    11. **测试案例**:`TestiBatis` 可能是一个测试类,用于演示如何使用 Ibatis 进行数据库操作。通常会包含初始化 SqlSessionFactory、打开 SqlSession、调用 Mapper 方法、提交事务、关闭 Session 等步骤。 在实际...

    ibatis入门教程与开发指南

    **ibatis入门教程与开发指南** Ibatis,全称MyBatis-iBATIS,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以使用简单...

    iBatis入门教程

    ### iBatis入门教程知识点详解 #### 一、iBatis简介 iBatis是一个开源框架,用于简化Java应用程序与数据库之间的交互。它基于SQL语句执行查询,并将结果映射到Java对象上,从而降低了Java层代码与SQL语句之间的...

    ibatis.net入门实例,应用程序

    4,配置ibatis对应pojo的sqlmap文件 5,把providers.config复制到debug目录下,不用做任何修改 6,把SqlMap.config复制到debug目录下,只需修改其中的数据库联接信息,包括provider和dataSource 7,建数据库表 注意...

    freemarker+struts2+ibatis入门学习摘要

    "freemarker+struts2+ibatis入门学习摘要" 这个标题揭示了本文档将围绕三个核心Java技术框架进行讲解:FreeMarker、Struts2和iBatis。这些是Java Web开发中常用的技术,它们分别负责视图层、控制层和数据访问层的...

    SSI Spring+struts1+ibatis案例

    在IT行业中,SSI(Spring、Struts1、iBatis)是经典的Java Web开发框架组合,它们各自负责应用的不同层面,协同工作以构建高效、可维护的...同时,这个案例也可以作为教学材料,帮助初学者快速入门企业级Java应用开发。

    cairngorm简单入门实例(结合spring+ibatis)

    提供的"cairngorm简单入门实例.doc"文档应该详细介绍了如何设置项目、配置Cairngorm框架、整合Spring和iBatis,以及创建和运行一个基本的交互流程。`cairngormDemo`可能是一个包含所有源代码和配置文件的项目,包括...

    ibatis实践案例

    本案例可以让初学者一天就可以入门并掌握ibatis的整体思路,很不错的案例,自己写的!加入群:73624154

    ibatis入门示例

    标题中的“ibatis入门示例”表明我们将探讨的是关于MyBatis框架的基础知识。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。它的核心功能在于将Java代码与SQL语句进行解耦,使得开发者可以...

    ibatis经典入门

    7. **案例实践**:通过实际项目示例,加深对iBATIS的理解,包括如何在实际开发中结合Spring等框架进行整合使用。 通过深入学习和实践这些知识点,你将能够熟练掌握iBATIS,并在实际开发中有效利用这一强大的数据层...

    iBATIS SQL Maps 入门教程.rar

    本入门教程将引导您逐步掌握iBATIS的核心概念和使用方法,让数据库交互不再成为开发过程中的难题。 1. **iBATIS 概述** iBATIS 是一个轻量级的Java框架,它主要负责数据库的访问。通过XML配置文件或注解,开发者...

    ibatis1.rar_ibatis

    《Ibatis入门详解:从简单案例到深入理解》 Ibatis,作为一个轻量级的Java持久层框架,因其灵活性和易用性而被广大开发者所喜爱。本教程将基于提供的"ibatis1.rar"压缩包文件,带领大家一步步走进Ibatis的世界,...

    iBATIS SQL Maps入门教程.rar

    8. **实际案例**:教程通常会通过具体的实例,比如用户登录、商品添加等场景,来演示如何使用iBATIS进行数据库操作,帮助读者更好地理解理论知识。 9. **下载说明.txt**:这个文件可能是对教程获取和使用的一些说明...

    IBATIS_IN_ACTION

    除了针对Java的详细讲解外,本书还提供了iBATIS.NET的快速入门指南,对于.NET平台的开发者同样具有参考价值。 总之,《IBATIS_IN_ACTION》不仅是一本详尽的技术手册,更是一部引导读者深入了解iBATIS核心理念与技术...

    ibatis-in-action

    ### 五、附录:iBATIS.NET快速入门 - **环境搭建**:指导如何搭建iBATIS.NET开发环境。 - **示例程序**:提供一个简单的iBATIS.NET示例程序,帮助快速上手。 通过以上内容,读者可以全面了解iBATIS的基本概念、...

Global site tag (gtag.js) - Google Analytics