• 关于ibatis的缓存的


    在使用ibatis的时候,我们可以开启他自带的缓存,在实际使用中,我在sqlmap-config.xml 中一直有设置

    <settings
    cacheModelsEnabled="true"
    enhancementEnabled="true"
    lazyLoadingEnabled="true"
    maxRequests="512"
    maxSessions="64"
    maxTransactions="50"
    useStatementNamespaces="true"
    />

    之前一直没细看,这个cacheModelEnable='true'具体指什么,今天总算有点了解了。

    在我们设置 cacheModelsEnabled="true" 的时候,就是指我们启用了 mapping文件(****sqlMap.xml)的缓存,

    !!!然后,我们就可以 在xml(eg:ebooksqlMap.xml)中设置<cacheModel></cacheModel>了

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
        "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    
    <sqlMap namespace="EBook">
    
        <typeAlias alias="ebook" type="com.portal.domain.EBook" />
        <cacheModel id="ebook-cache" type ="LRU" readOnly="true" serialize="false">  
           <flushInterval hours="24"/>
           <flushOnExecute statement="EBook.create"/>  
           <flushOnExecute statement="EBook.update"/>
           <property value="500" name="size"/>  
        </cacheModel>  
        
        
        <resultMap id="ebookResult" class="ebook">
            <result property="id" column="ID" />
            <result property="identifier" column="IDENTIFIER" />
            <result property="coverUrl" column="COVERURL" />
            <result property="title" column="TITLE" />
            <result property="creator" column="CREATOR" />
            <result property="publishDate" column="PUBLISHDATE" />
            <result property="publisher" column="PUBLISHER" />
            <result property="isbn" column="ISBN" />
            <result property="bookStatus" column="BOOKSTATUS" />
            <result property="importDate" column="IMPORTDATE" />
            <result property="upBookDate" column="UPBOOKDATE" />
            <result property="downBookDate" column="DOWNBOOKDATE" />
            <result property="abstractInfo" column="ABSTRACTINFO" />
            <result property="copyNumber" column="COPYNUMBER" />
            <result property="catalog" column="CATALOG" />
            <result property="subject" column="SUBJECT" />
            <result property="orderLoc" column="ORDERLOC" />
            <result property="price" column="PRICE" />
            <result property="discountprice" column="DISCOUNTPRICE" />
        </resultMap>
        
        <!-- 用于select查询公用抽取的列 -->
        <sql id="commonColumns">
            <![CDATA[
                ID,
                IDENTIFIER,
                COVERURL,
                TITLE,
                CREATOR,
                PUBLISHDATE,
                PUBLISHER,
                ISBN,
                BOOKSTATUS,
                IMPORTDATE,
                UPBOOKDATE,
                DOWNBOOKDATE,
                ABSTRACTINFO,
                COPYNUMBER,
                CATALOG,
                SUBJECT,
                ORDERLOC,
                PRICE,
                DISCOUNTPRICE
            ]]>
        </sql>
        
        
        
        <insert id="create" parameterClass="ebook" >
             <![CDATA[
            INSERT INTO
            P_EBOOK (
                IDENTIFIER,
                COVERURL,
                TITLE,
                CREATOR,
                PUBLISHDATE,
                PUBLISHER,
                ISBN,
                BOOKSTATUS,
                IMPORTDATE,
                UPBOOKDATE,
                DOWNBOOKDATE,
                ABSTRACTINFO,
                COPYNUMBER,
                CATALOG,
                SUBJECT,
                ORDERLOC,
                PRICE,
                DISCOUNTPRICE
            ) VALUES (
                #identifier# ,
                #coverUrl# ,
                #title# ,
                #creator# ,
                #publishDate# ,
                #publisher# ,
                #isbn# ,
                #bookStatus# ,
                #importDate# ,
                #upBookDate# ,
                #downBookDate# ,
                #abstractInfo# ,
                #copyNumber# ,
                #catalog# ,
                #subject# ,
                #orderLoc# ,
                #price# ,
                #discountprice#
            )
        ]]>
        </insert>
        
        <sql id="dynamicWhere">
            <dynamic prepend="where">
                <isNotEmpty prepend="AND" property="id">
                    ID = #id#
                </isNotEmpty>
                <isNotEmpty prepend="AND" property="identifier">
                    IDENTIFIER = #identifier#
                </isNotEmpty>
                
            </dynamic>
        </sql>
        
        <select id="loadByObject" resultMap="ebookResult">
            SELECT
            <include refid="commonColumns" />
             <![CDATA[
                FROM P_EBOOK  WHERE  IDENTIFIER = #identifier#
            ]]>
        </select>
        
        <select id="loadById" parameterClass="int" resultMap="ebookResult">
        SELECT
            <include refid="commonColumns" />
             <![CDATA[
                FROM P_EBOOK  WHERE  ID = #id#
            ]]>
        </select>
        
        
        <select id="list-count" resultClass="int" cacheModel="ebook-cache">
        <![CDATA[
            select count(*) from P_EBOOK
        ]]>
            <include refid="dynamicWhere" />
        </select>
        
        <!-- 分页查询 -->
        <select id="list" resultMap="ebookResult" cacheModel="ebook-cache">
            <![CDATA[
            SELECT * FROM P_EBOOK
            ]]>
            <include refid="dynamicWhere" />
            <![CDATA[
            ORDER BY  ORDERLOC  LIMIT #pageStart#,#pageSize# ]]>
        </select>
        
        <update id="update" parameterClass="ebook">
        <![CDATA[ UPDATE P_EBOOK SET]]>
            <dynamic prepend=" ">
                <isNotEmpty prepend="," property="orderLoc">
                    ORDERLOC = #orderLoc#
                </isNotEmpty>
            </dynamic>
            <![CDATA[ WHERE ID = #id# ]]>
        </update>
        
        
    </sqlMap>    

    tips1:这里的 <flushOnExecute statement="EBook.create"/>  我使用的是 需要命名空间,so,需要是【命名空间.****】

    tips2:ibatis 的缓存不需要额外的jar,基础的jar就足够了 ibatis-2.3.0.667.jar 

    其他 各个参数的意义,一般解释的都有,这里不做过多描述.

    多想,多试
  • 相关阅读:
    Mybatis基本用法--下
    Mybatis基本用法--中
    Mybatis基本用法--上
    Java规范推荐
    jquery、js获取页面高度宽度等
    linux ssh -l 命令运用
    div的onblur事件
    js获取url中的参数方法
    div内部元素居中
    oracle排序
  • 原文地址:https://www.cnblogs.com/junyi0120/p/5336714.html
Copyright © 2020-2023  润新知