Ibatis资料

原创 2006年06月07日 10:08:00
Ibatis已经提提升为apache的开源一级项目,是作为j2ee持久层框架实现的一个开源的项目。有两个版本,一个是forjava,一个是fornet。
本身还有一个jpetstore的实例,使用了struts+ibatis来实现
http://www.ibatis.org
2          Ibatis-dao
Dao-database access object 数据库访问对象,是业务层和持久层的中间层,提供了访问数据库的接口,而不用考虑具体的持久层是用什么来实现的。。
Dao.xml
<daoConfig>
       <context>
              <transactionManager type="SQLMAP">
                     <property name="SqlMapConfigResource" value="com/aspire/ibatis/persistence/sqlmapdao/sql/sqlMapConfig.xml" />
              </transactionManager>
              <dao inter implementation="com.aspire.ibatis.persistence.sqlmapdao.UserSqlMapDao" />
       </context>
</daoConfig>
目录结构
       Com.aspire.ibatis //存放dao.xml以及daoConfig.java文件
      
       Com.asprie.ibatis.iface //存放dao的接口文件
       Com.aspire.ibatis.sqlmapdao//实现了dao接口文件类
       baseSqlMapDao extends SqlMapDaoTemplate
3          Ibatis-sqlmap
SqlmapApi能使开发人员很轻易的将javabean,parameter,等映射成为perparedstatement的参数,并轻松返回result结果集合
Sqlmap的流程图
3.1       sqlmapconfig。Xml配置文件
<sqlmapconfig>
         <proerties>//用来在配置文件中查找标准的java属性文件name=value
</sqlmapconfig>.
<settings  //用来配置和优化sqlmapclient的实例的选项
cacheModelsEnabled="true" //全局性的启动或者关闭sqlmapclient的所有cache
enhancementEnabled="true" //全局性的启动或者关闭运行时字节码增强的功能,建议true
lazyLoadingEnabled="true" // 全局性的启用或者关闭sqlmapclient的延迟加载
maxRequests="32" //同时执行sql语句的最大现成数,大于这个值的线程将阻塞直到另一个线程执行完成,通常这个数值应该是maxtransction10倍,并且大于maxtranstionmaxsession,减少这个数可以提高性能
maxSessions="10" // 同一活动时间内的最大session的数,maxtranstion<maxsession<maxrequest,较少可以降低内存的使用
maxTransactions="5" //同时进入sqlmapclientstartTranscation的最大数量,减少这个数可以提高性能
useStatementNamespaces="false"//启用本属性必须使用全局限定名来引用mappedstatement
 />
<typealias> //别名
在sqlmap中预定义了别名
JDBC com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransactionConfig
JTA com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig
EXTERNAL com.ibatis.sqlmap.engine.transaction.external.ExternalTransactionConfig
SIMPLE com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory
DBCP com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory
JNDI com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory
 
<transactionManager> //用来配置事务管理,三种事务管理的类型JDBC,JTA,EXTERNAL
<datasource>//提供三种datasourceFactory
1.      SIMPLE
基于ibatis的simpledatasource连接池实现
JDBC.Driver
JDBC.connectionURL
JDBC.UserName
JDBC.Password
Pool.MaximunActionConnections
Pool.MaximunIdleConnections
Pool.MaxnumCheckOutTime
Pool.TimeToWait
Pool.PingQuery
Pool.PingEnabled
Pool.PingConnectionsOlderThan
Pool.PingConnectionsNotUserdFor
 
2.      DBCP
JDBC.Driver
JDBC.ConnectionURL
JDBC.Username
JDBC.Password
Pool.MaximumActionConections
Pool.MaximumIdleConnections
Pool.MaximumWait
 
3.      JNDI
 
</datasource>
</transactionmanager>
<sqlmap resource=””> //指定sqlmap所在的路径
3.2       Sqlmap
Parameterclass
Parametermap
Inline parameter
如果在内镶的parameter中指定null的替代值,必须指定类型#parameter:type:替代值#
Resultclass
Resultmap
       Property对应的javabean的get方法
       Column对应的数据库的字段名
       columnIndex用户resultset赋值费javabean字段的顺序号
jdbctype resultset中用于赋值javabean的数据库字段类型
javatype
nullvalue
select用于描述对象之间的关系
cacheModel /定义了mappedstatement的缓存方案
       readonly标识缓存是否可修改
       serialize标识可读写缓存
       缓存的类型:MEMORY,LRUFIFO,OSCACHE
<select resultClass=”xml” xmlResultName=”root”>//将返回一个xml文档,root是根节点
3.3       动态mapstatement
<dynamic>
Prepend的父的属性可以覆盖子的prepend的属性,使用$parameter$
二元条件
       <isEqual>
       <isNotEqual>
       <isGreaterThan>
       <isGreaterEquals>
       <isLessThan>
       <isLessEqual>
一元条件
       <isPropertyAvaliable>
<isNotPropertyAvaliable>
<isNull>
<isNotNull>
<isEmpty>
<isNotEmpty>
 Other
           <isParameterPresent>
           <isNotParameterPresent>
<iterate>
3.4       sqlmapApi
queryforList的三个版本
1.直接返回查询结果
2.可以允许跳过结果的数目,以及返回结果的最大数目
3.可以让你使用结果对象,而不是数据表的行和列来逐行的处理结果集,
4          Others
Log4j来配置ibatis
Log4j.rootLogger=ERROR,stdout
 
Log4j.logger.com.ibatis=DEBUG
Log4j.logger.com.ibatis.common.jdbc.SimDataSource=DEBUG
Log4j.logger.com.ibatis.Common.jdbc.ScriptRunner=DEBUG
Log4j.logger.com.ibatis.sqlmap.engine.impl.sqlmapClientDelegate=DEBUG
Log4j.logger.java.sql.Connection=DEBUG
Log4j.logger.java.sql.Statement=DEBUG
Log4j.logger.java.sql.PreparedStatement=DEBUG
Log4j.logger.java.sqlResultSet=DEBUG
 
Log4j.appender.stdout=org.apache.log4j.ConsoleAppender
Log4j.appender.stdout.layout=org.apache.log4j.PatternLayOut
Log4j.appender.stdout.layout.ConversionPattern=%5p[%t]-%m%n
其他开源项目
Log4j
JMock – 用于单元测试
Junit
struts

IBatis配置一对一、一对多两种实现方式

IBatis配置一对一、一对多两种实现方式有两张表:student(学生)、class(班级),一个学生只属于某一个班级,但某一个班下可以有多个学生。一对一方式一...
  • Muspelheim
  • Muspelheim
  • 2016年01月08日 22:41
  • 2693

ibatis基于拦截器的分页实现

ibatis基于拦截器的分页实现
  • ZWLJavaWeb
  • ZWLJavaWeb
  • 2016年07月23日 17:41
  • 488

ibatis使用方法

iBATIS3.0学习(一)使用iBATIS3.0完成增删改查 博客分类: iBATIS3 iBATISApacheSpringSQLJDBC  使用iBATIS3.0完成增删改查 ...
  • a3126248
  • a3126248
  • 2016年12月20日 21:42
  • 314

ibatis新手入门

ibatis 是什么 iBATIS是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。 iBATIS不同于一般的OR映射框架。OR映射框架,将数据库表、字段等映射到类、属性,...
  • zy416548283
  • zy416548283
  • 2015年07月03日 11:37
  • 1351

mybatis相对于ibatis的优势

2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis。从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架。一个没人维护的框架注定被myba...
  • bruce128
  • bruce128
  • 2017年05月14日 00:12
  • 1516

iBatis查询select详解

是iBatis已经映射的语句类型,就是查询了,为了配合说明,这里再介绍两个标记:和,前者用来创建一个文本片段,这些片段可以组合起来创建完整的SQL语句;后者很显然就是包含的意思了。假设我们有如下代码段...
  • ahgaojie451
  • ahgaojie451
  • 2015年05月18日 14:47
  • 2859

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

iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Java 对象与输入参数和结果集的映射,又能够让用...
  • JameBing
  • JameBing
  • 2016年11月24日 17:36
  • 1984

ibatis时间格式化比较

  • linzhichao12345
  • linzhichao12345
  • 2014年11月18日 12:11
  • 4835

ibatis禁用缓存

在最近的项目开发中遇到一个问题,前端传一个表名到后台。ibatis发起查询,ibatis的xml如下 select * from $tableName$   测试的过程...
  • playleud
  • playleud
  • 2015年01月29日 13:44
  • 1267

ibatis配置详解

ibatis实例配置  一个典型的配置文件如下(具体配置项目的含义见后):  xml version="1.0" encoding="UTF-8"    ?>          PU...
  • iloveyin
  • iloveyin
  • 2016年03月11日 12:57
  • 2092
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ibatis资料
举报原因:
原因补充:

(最多只允许输入30个字)