zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/simpledev/p/3059881.html
Copyright © 2011-2022 走看看