笔者最近和后台开发、数据库打交道不少,自然ORM这块的东西也是应用频繁。笔者和很多朋友一样原来也是一直学习和使用Hibernate,毕竟Hibernate的大名还是要响亮的多。然而金无足赤,人无完人,每一款框架都有自己的优点和缺点,喜欢Hibernate的可以继续去喜欢,今天的主角是iBATIS。
iBATIS,目前已经更名为MyBatis,从命名上更加亲切,但对于iBATIS的使用者来说却相差不大,笔者今天还是来说iBATIS,并从实际开发的绝度谈下自己的使用经验和心得体会。
想跟大家分享以下内容:iBATIS的基本使用规则、iBATIS如何调用存储过程、如何使用IBATOR插件来简化代码以及使用插件的意义。开篇还是俗一点从如何使用来讲,一步一步的深入,先入门再跟大家提要点、难点。
iBATIS基础实例:
通过本实例我们完成以下事情:
从数据库里读取Student表里的所有数据。
环境准备:
iBATIS JAR包 笔者这里使用的是2.3.4.726的JAR包
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,相信很多朋友都顺利运行成功了,从这部分代码中我们可以看出SqlMapClient是iBATIS中的核心组件,是提供数据操作的基本平台。同时SqlMapClient提供了众多的数据操作方法并且基本上是以SQL类型分别命名:INSERT、SELECT、UPDATE、DELETE。还有一些常用的方法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入门案例程序"涉及到的核心知识点是MyBatis框架的使用,这是一个流行的Java持久层框架,用于简化数据库操作。MyBatis通过将SQL语句与Java代码分离,提高了开发效率,并提供了灵活的映射机制,使得...
《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...
【标签】"ibatis入门案例"明确了这个案例是面向初级用户的,它将涵盖MyBatis的基本概念,如SQL映射文件、Mapper接口、事务管理等,并通过实际的数据库操作展示如何使用MyBatis进行数据存取。 【压缩包子文件的文件...
今天刚做的ibatis入门小案例,适合初学者学习使用.我使用的是oracle,如果下载是使用的oracle的DataBase只需要创建一个学生表就OK了,如果是其他数据库还需要修改SqlMap.properties的数据库的连接语句.
来自网络,这里免费分享给大家。。ibatis入门详细教程(结合案例),本人看过值得一看
11. **测试案例**:`TestiBatis` 可能是一个测试类,用于演示如何使用 Ibatis 进行数据库操作。通常会包含初始化 SqlSessionFactory、打开 SqlSession、调用 Mapper 方法、提交事务、关闭 Session 等步骤。 在实际...
**ibatis入门教程与开发指南** Ibatis,全称MyBatis-iBATIS,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以使用简单...
### iBatis入门教程知识点详解 #### 一、iBatis简介 iBatis是一个开源框架,用于简化Java应用程序与数据库之间的交互。它基于SQL语句执行查询,并将结果映射到Java对象上,从而降低了Java层代码与SQL语句之间的...
4,配置ibatis对应pojo的sqlmap文件 5,把providers.config复制到debug目录下,不用做任何修改 6,把SqlMap.config复制到debug目录下,只需修改其中的数据库联接信息,包括provider和dataSource 7,建数据库表 注意...
"freemarker+struts2+ibatis入门学习摘要" 这个标题揭示了本文档将围绕三个核心Java技术框架进行讲解:FreeMarker、Struts2和iBatis。这些是Java Web开发中常用的技术,它们分别负责视图层、控制层和数据访问层的...
在IT行业中,SSI(Spring、Struts1、iBatis)是经典的Java Web开发框架组合,它们各自负责应用的不同层面,协同工作以构建高效、可维护的...同时,这个案例也可以作为教学材料,帮助初学者快速入门企业级Java应用开发。
提供的"cairngorm简单入门实例.doc"文档应该详细介绍了如何设置项目、配置Cairngorm框架、整合Spring和iBatis,以及创建和运行一个基本的交互流程。`cairngormDemo`可能是一个包含所有源代码和配置文件的项目,包括...
本案例可以让初学者一天就可以入门并掌握ibatis的整体思路,很不错的案例,自己写的!加入群:73624154
标题中的“ibatis入门示例”表明我们将探讨的是关于MyBatis框架的基础知识。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。它的核心功能在于将Java代码与SQL语句进行解耦,使得开发者可以...
7. **案例实践**:通过实际项目示例,加深对iBATIS的理解,包括如何在实际开发中结合Spring等框架进行整合使用。 通过深入学习和实践这些知识点,你将能够熟练掌握iBATIS,并在实际开发中有效利用这一强大的数据层...
本入门教程将引导您逐步掌握iBATIS的核心概念和使用方法,让数据库交互不再成为开发过程中的难题。 1. **iBATIS 概述** iBATIS 是一个轻量级的Java框架,它主要负责数据库的访问。通过XML配置文件或注解,开发者...
《Ibatis入门详解:从简单案例到深入理解》 Ibatis,作为一个轻量级的Java持久层框架,因其灵活性和易用性而被广大开发者所喜爱。本教程将基于提供的"ibatis1.rar"压缩包文件,带领大家一步步走进Ibatis的世界,...
8. **实际案例**:教程通常会通过具体的实例,比如用户登录、商品添加等场景,来演示如何使用iBATIS进行数据库操作,帮助读者更好地理解理论知识。 9. **下载说明.txt**:这个文件可能是对教程获取和使用的一些说明...
除了针对Java的详细讲解外,本书还提供了iBATIS.NET的快速入门指南,对于.NET平台的开发者同样具有参考价值。 总之,《IBATIS_IN_ACTION》不仅是一本详尽的技术手册,更是一部引导读者深入了解iBATIS核心理念与技术...
### 五、附录:iBATIS.NET快速入门 - **环境搭建**:指导如何搭建iBATIS.NET开发环境。 - **示例程序**:提供一个简单的iBATIS.NET示例程序,帮助快速上手。 通过以上内容,读者可以全面了解iBATIS的基本概念、...