关闭

Ibatis资料

标签: ibatis持久层框架log4jstrutsdao数据库
1929人阅读 评论(1) 收藏 举报
分类:
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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:64616次
    • 积分:929
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:7篇
    • 译文:1篇
    • 评论:43条