ibatis学习笔记

Ibatis支持.net开发。

sqlMap文件

<alias> <resultMaps> <statements>

$ #符号

Mobile like '%$mobile%' ->mobile like '%'+#mobile#+'%'

 

ApplicationContext-ibatis.xml

  1. 数据源配置dataSource
  2. sqlMapClient 关联sqlmap-config.xml和数据源dataSource
  3. dao bean配置,关联sqlMapClient

 

sqlMapClient架构

设置配置,如缓存模式(cacheModelsEnabled 缺省true),增加模式(字节码增强 enhancementEnabled 缺省false),延迟加载(lazyLoadingEnabled 缺省true),错误跟踪,最大线程数(maxRequests),最大会话数(maxSession),最大事务数(maxTransaction),使用命名空间(useStatementNamespaces 缺省false 例如:queryForObject("sqlMapName.statementName"); )。

maxRequests > maxSession,maxTransactions, 缺省512

maxSession >= maxTransactions && maxSession < maxRequest 缺省128

maxTransactions <= maxSession && maxTransaction <远远小于 maxRequest 缺省32

 

数据源配置参数说明:

Pool.MaximumActiveConnections: 数据库连接池可维持的最大容量

Pool.MaximumIdelConnections: 数据库连接池中允许的挂起(idle)连接数

SIMPLE模式:

Pool.MaximumCheckoutTime: 连接被某个任务所允许占用的最大时间。

Pool.TimeToWait: 设定线程所允许等待的最长时间

Pool.PingQuery: select 1 from t_user

Pool.PingConnectionsOlderThan: 对持续连接时间超过设定值的连接进行检测。

Pool.PingConnectionsNotUsedFor: 对空闲超过设定值的连接进行检测。

 

  1. 关联sqlMap xml文件

 

sqlMap文件

1.<typeAlias>

2.resultMap  <result />

3.parameterMap <parameter />

4.select,insert,update,delete,statement,sql

 

<dynamic> 动态SQL,分页查询。

isEmpty,isEqual,isGreaterEqual,isGreaterThan,isLessEqual,isLessThan,isNotEmpty,isNotEqual,isNotNull,isNull

</dynamic>

5.procedure调用存储过程,优点:减少sql网络传输。对业务关系复杂的sql语句的封装,sql语句以程序块的形式被封装在数据库中,写好之后,无论是java,还是.net,抑或其他开发语言,可以像使用sql语句那样随意的调用,这就是数据库开发。

 

Jdbc: CallableStatement cs  = ct.prepareCall("{call paging_pro(?)}");

cs.setString(1, "emp");

cs.registerOutParameter(2,oracle.jdbc.OracleTypes.INTEGER); //注册输出类型。

 

<parameterMap class="map" id="swap">

              <parameter property="nameStr" javaType="java.lang.String" jdbcType="varchar" mode="IN"/>

              <parameter property="returnid" javaType="java.lang.Integer" jdbcType="int" mode="OUT"/>

       </parameterMap>

       <procedure id="insertProcedure" parameterMap="swap">

              {call paging_pro(?,?)}

       </procedure>

特殊字符的处理:写在<![CDATA[    ]]>

缓存与查询

LRU: 最近最少使用算法

FIFO: 先进先出队列

LFU: 最近最不常用调度算法

OPT: 根据未来实际使用情况将未来的近期里不用的页替换出去,这种算法是用来评价期它替换算法好坏的标准,不可能实现。

 

<cacheModel type="LRU" id="ttt">

<flushInterval hours="24" />

<flushOnExecute statement="saveT" />

<flushOnExecute statement="modifyT" />

<flushOnExecute statement="deleteT" />

<property name="size" value="1000" />

</cacheModel>

<select … cacheModel="ttt">

 

sqlMapConfig.xml 中的异同.

 

iBATIS_v1

iBATIS_v2

iBATIS_v3

DOCTYPE

sql-map-config.dtd

sql-map-config-2.dtd

ibatis-3-config.dtd

configuration标签

<sql-map-config>

</sql-map-config>

<sqlMapConfig>

</sqlMapConfig>

<configuration>

</configuration>

sqlMap标签

<sql-map recource../>

<sqlMap recource../>

<mappers>

<mapper recource.. />

</mappers>

 

sqlMap 映射中的异同

 

iBATIS_v1

iBATIS_v2

iBATIS_v3

DOCTYPE

sql-map.dtd

sql-map-2.dtd

ibatis-3-mapper.dtd

sqlMap标签

<sql-map>

</sql-map>

<sqlMap>

</sqlMap>

<mapper>

</mapper>

statement标签

<mapped-statement>

</mapped-statement>

<select></select>

<update></update>

<statement></>…

<select></select>

<update></update>

 

参数表示

#id#

#id#

#{id}

 

sqlMap API的异同

 

iBATIS_v1

iBATIS_v2

iBATIS_v3

执行对象

SqlMap

SqlMapClient

SqlSession

得到执行

XMLSqlMapBuilder->

builderSqlMap

SqlMapClientBuilder->

builderSqlMap

SqlSessionFactory->

openSession

执行

excuteQueryForObject

queryForObject..

queryForList…

update…

selectOne…

selectList…

update…

http://www.iteye.com/topic/847698

 

 ibatis学习笔记

你可能感兴趣的:(ibatis)