iBatis框架是Java持久层开发框架,说白了就是前人写了一部分代码(针对数据库操作),我们要做的就是再次开发,拿来框架直接使用。

我们自己开发时,dao层的sql语句都是写死在程序中的,如果查询条件改变什么的都需要修改sql语句,这样就得去修改原代码,违背了开发原则中的开闭原则。有没有一种实现让sql不再写死在程序里,iBatis框架就可以使sql文活起来。

iBatis是一个开源的项目,有兴趣的可以去看看那些元老级的人物是怎么将封装的框架。本文旨在介绍它的使用。

第一步:搭建环境

所谓的搭建环境就是拷贝iBatis的jar包到我们的项目中。这样我们就可以使用框架中的相关类啦。

由于iBatis是数据库方面的操作,所以还有添加数据库方面的jar包,我用的是oracle的数据库,所以得到oracle的安装目录下面去找链接数据库的ojdbc6.jar

第二步:编写实体类和dao层接口及实现

这里需要做的就是将数据库的表对应封装成对象实体,定义Dao层的接口和实现,接口的具体实现这里不需要写,只需要把类准备出来,把接口准备出来就可以拉。

第三步:拷贝xml文件

将iBatis中的两个xml文件拷贝到项目中(下载的iBatis资料中会有相应的jar包和简单的例子,例子中有xml文件),一个是SqlMapConfig.xml是完成数据库配置的文件,另一个是实体类对应的xml文件,本文以User.xml为例。

需要注意的是这两个文件所放的位置,一般都是将SqlMapConfig.xml文件拷贝到项目的根目录下面,放在src下,实体类对应的xml文件跟对应的实体放在一块就行了。

一个系统中就只有一个SqlMapConfig.xml文件,文件的名称可以更改,是数据库配置文件,文件内容参考如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE sqlMapConfig
  3. PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
  4. "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
  5. <sqlMapConfig>
  6. <transactionManager type="JDBC" commitRequired="false">
  7. <dataSource type="SIMPLE">
  8. <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
  9. <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:Orl"/>
  10. <property name="JDBC.Username" value="scott"/>
  11. <property name="JDBC.Password" value="tiger"/>
  12. </dataSource>
  13. </transactionManager>
  14. <sqlMap resource="com/ibatis/bean/User.xml"/>
  15. </sqlMapConfig>

实体类的配置文件则有多个,是和实体类对应的。内容参考如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE sqlMap
  3. PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
  4. "http://ibatis.apache.org/dtd/sql-map-2.dtd">
  5. <sqlMap>
  6. <!--起别名-->
  7. <typeAlias alias="UserType" type="com.ibatis.bean.User"></typeAlias>
  8. <!--insert操作,parameterClass为参数的类型-->
  9. <insert id="insertUserID" parameterClass="UserType">
  10. insert into t_user (
  11. username,
  12. userpswd)
  13. values (
  14. #username#, #userpswd#
  15. )
  16. </insert>
  17. <delete id="deleteUser" parameterClass="java.lang.String">
  18. delete from t_user where username=#username#
  19. </delete>
  20. </sqlMap>

第四步:编写dao层接口实现

用了框架后,实现类中就没有sql语句了,在上面参考代码中看到,sql语句都配置到对应的实体类对应的配置文件中拉,这样实现类的代码就会变得很简单,如下:

这样就可以实现对User的添加和删除了,如果此时还不放心,可以添加个测试类测试一次。

使用框架,前提配置工作一定要做好。主要在配置文件上面。一定要仔细。

iBatis框架基本使用的更多相关文章

  1. iBatis框架batch处理优化 (转)

    为什么要做batch处理        这个问题我就不解释了,因为我想你们肯定能比我解释的更好!如果你真的不知道,那就到Google上去搜索一下吧☻Oracle回滚段    这个问题偶也不很明白,只是 ...

  2. iBatis框架简介

    一.为啥使用iBatis? 在 Hibernate.JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择.即使在持久层框架层出不穷 ...

  3. 【转】深入分析 iBATIS 框架之系统架构与映射原理

    深入分析 iBATIS 框架之系统架构与映射原理 iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Ja ...

  4. 深入分析 iBATIS 框架之系统架构与映射原理--转载

    http://www.ibm.com/developerworks/cn/java/j-lo-ibatis-principle/ iBATIS 通过 SQL Map 将 Java 对象映射成 SQL ...

  5. spring+struts2+ibatis 框架整合以及解析

    一. spring+struts2+ibatis 框架 搭建教程 参考:http://biancheng.dnbcw.net/linux/394565.html 二.分层 1.dao: 数据访问层(增 ...

  6. spring struts2 ibatis 框架结构图

    spring struts2 ibatis 框架结构图

  7. 框架学习:ibatis框架的结构和分析

    由于最近一段时间比较忙碌,<框架学习>系列的文章一直在搁浅着,最近开始继续这个系列的文章更新. 在上篇文章中我们说到了hibernate框架,它是一种基于JDBC的主流持久化框架,是一个优 ...

  8. Ibatis框架之系统架构

    如果用最简洁的话来总结 iBATIS 主要完成那些功能时,我想下面几个代码足够概括. Class.forName("oracle.jdbc.driver.OracleDriver" ...

  9. 深入分析 iBATIS 框架之系统架构与映射原理

    iBATIS 框架主要的类层次结构 总体来说 iBATIS 的系统结构还是比较简单的,它主要完成两件事情: 根据 JDBC 规范建立与数据库的连接: 通过反射打通 Java 对象与数据库参数交互之间相 ...

随机推荐

  1. vs2013 括号自动配对样式设置

     在做公司一个项目的时候,需要用到VS2013编辑器,用了之后感觉有点不太爽. 在js文件里定义了方法之后,由于方法比较长,写完之后再回来看就有些不方便,尤其是方法里还有几个判断,后人再看的时候会有些 ...

  2. 浅析MySQL中exists与in的使用

    exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录, ...

  3. react.js语法为了更好的兼容可以选以下这种方法配置即可

    首先下一个sublime text3 的编辑器: 支持大家使用正版,不过我是为了方便才所以这版本而已... 地址: http://sublimetext.iaixue.com/forum.php?mo ...

  4. failed to lazily initialize a collection of role:XXX, no sessi

    系统 框架  springMVC+hibernate 这种情况 由于 hibernate 的 懒汉机制,和 Spring 事务机制(不确定)造成的 由于 spring 配置的时候,在service 层 ...

  5. Objective-C基础3

    1.OC内存管理 1)范围:管理任何继承NSObject的对象,对其他的基本数据类型无效(堆区),否则会造成内存泄露 2)原理:任何对象都可能有用一个或多个所有者,只要一个对象至少还拥有一个所有者,它 ...

  6. PHP就业班心得:IP与域名以及DNS和端口号的概念

    什么是IP地址 概念:IP地址就相当于人们的身份证号码!每一个连入Internet的计算机都应该有全世界独一无二的IP地址 IP地址是使用32个bit位来保存,也就是4个字节! 为了方便记忆,采用十进 ...

  7. T3500通过PXE克隆报“Unable to Control A20 Line XMS Driver not installed”

    问题:使用deepin_ghost1.6中的PXE网络GHOST时提示如下错误信息: ERROR:Unable to control A20 line!XMS Driver not installed ...

  8. 搭建基于Jenkins salt-api的运维工具

    1. 安装salt-master和salt-minion 安装过程不再赘述,请参考http://docs.saltstack.com/en/latest/topics/installation/ind ...

  9. Dashborad 上显示出错

    Dashboard 上显示的错误是因为没有选择对应的X-坐标. 上周处理过 一个字段,它是一个Formula 字段,作为Dashboard的 Data Source 前提是报表是得Group by 一 ...

  10. Ajax开发中服务端Response的Content-Type

    转自http://www.cnblogs.com/hyl8218/archive/2010/03/10/1681484.html ajax开发中在请求服务器端的响应时, 对于每一种返回类型 规范的做法 ...