1.ibatis中使用缓存
首先设置SqlMapConfig.xml中<settings/>节点的属性cacheModelsEnabled="true"
然后在具体sqlmap文件中书写<cacheModel>
Xml代码
1
<cacheModel id="product-cache" type="LRU">
2
<flushInterval hours="24"/>
3
<flushOnExecute statement="insertProduct"/>
4
<flushOnExecute statement="updateProduct"/>
5
<flushOnExecute statement="deleteProduct"/>
6
<property name="size" value="1000" />
7
</cacheModel>
最后给<select/>节点应用cache
Xml代码
1
<select id="getAllProducts" cacheModel="product-cache">
2
select * from PRODUCT
3
</statement>
复杂点的用法
Xml代码
1
<cacheModel/>节点
2
type="LRU"
3
type属性可以指定cache的类型,ibatis支持3种缓存:
4
MEMORY 没有统一的对象重用模式或内存不足的应用。
5
LRU 经常使用的对象,这是性能最好的选择。
6
FIFO 在短时间内持续引用,而后很可能不再使用。
7
也可以使用外部cache如:
8
type="OSCACHE"
9
10
readOnly="true"
11
默认true时缓存效果最好,可以减少更新。
12
13
serialize="false"
14
默认false,设true可以提高整体应用的性能。
15
serialize只能应用于实现了Serializable接口的对象,而且和lazyLoadingEnabled="true"属性冲突。
16
17
flushInterval
18
自动刷新间隔时间。
19
20
flushOnExecute
21
在特定id的操作后,刷新cache,可选操作。
22
23
手动刷新缓存
24
[sqlmap].flushDataCache("product-cache")
25
刷新cache当id="product-cache"
26
[sqlmap].flushDataCache()
27
刷新sqlmap内的所有cache
28
2.ibatis 拼接sql语句,动态查询
在ibatis中使用安全的拼接语句,动态查询
ibatis比JDBC的优势之一,安全高效
说明文字在注释中
Xml代码
1
<select id="selectAllProducts" parameterClass="Product" resultMap="ProductResult">
2
select id,note from Product
3
<dynamic prepend="WHERE">
4
<!-- isNotNull判断参数是否存在,Integer类型 -->
5
<isNotNull property="id">
6
<!-- isGreaterThan判断参数是否大于compareValue,isGreaterEquals是大于等于 -->
7
<isGreaterThan prepend=" and " property="id" compareValue="0">
8
id = #id#
9
</isGreaterThan>
10
</isNotNull>
11
<!-- isNotEmpty判断字串不为空,isEmpty可以判断字串为空 -->
12
<isNotEmpty prepend=" and " property="note">
13
<!-- 模糊查询不能用#,#在是用prepareStatement的?插入参数,$是文本替换 -->
14
note like '%$note$%'
15
</isNotEmpty>
16
</dynamic>
17
</select>
用Map传参数
Xml代码
1
<select id="selectAllProducts" parameterClass="java.util.HashMap" resultMap="ProductResult">
2
select id,note from Product
3
<dynamic prepend="WHERE">
4
<!-- isPropertyAvailable判断属性是否有效 -->
5
<isPropertyAvailable property="id">
6
<isNotNull property="id">
7
<!-- isLessThan判断参数是否小于compareValue,isLessEquals是小于等于 -->
8
<isLessThan prepend=" and " property="id" compareValue="10">
9
id = #id#
10
</isLessThan>
11
</isNotNull>
12
</isPropertyAvailable>
13
</dynamic>
14
</select>
---------------------------------几个常用属性----------------------------------
Xml代码
1
<isPropertyAvailable> 属性是存在
2
<isNotPropertyAvailable> 属性不存在
3
<isNull> 属性值是null
4
<isEmpty> 判断Collection.size<1或String.length()<1
5
<isEqual> 等于
6
<isNotEqual> 不等于
7
<isGreaterThan> 大于
8
<isGreaterEqual> 大于等于
9
<isLessThan> 小于
10
<isLessEqual> 小于等于