mybatis缓存文件的配置
来源:互联网 发布:java fast paxos算法 编辑:程序博客网 时间:2024/06/05 06:25
在java程序运行过程中,每次调用都会访问数据库吗?答案是否定的,java会有缓存将访问过的存起来下次调用时就不在连接数据库了,而是从缓存中找。
mybatis缓存详细:http://blog.csdn.net/marvel__dead/article/details/70133715 引用别人的,写的挺好
下面是我自己的测试:
一.配置文件的写法
log4 相关包是为了测试用的,主要在控制台显示程序的进程。ehcache 和 mybatis-ehcache是俩个mybatis的缓存包,外部缓存需要添加的jar包
步骤如下:
1.配置文件: conf.xml usermapper.xml
2. conf.xml 第四行的setting标签,启用缓存(外部缓存和二级缓存都需要)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings> <setting name="cacheEnabled" value="true"/></settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/luntan" /> <property name="username" value="root" /> <property name="password" value="mysql" /> </dataSource> </environment> </environments> <mappers> <mapper resource="it/com/mapper/UserMapper.xml"/> </mappers> </configuration>3.缓存只有select有,所以那条select使用缓存,记得在标签里将 userCache改成true
同时配置cache标签,下面代码使用的是外部缓存,被注释的是二级缓存,里面的配置标签property ehcache.xml文件中有,外部缓存会jar包会自动调用
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="it.com.dao"><!-- 缓存配置 --> <cache type="org.mybatis.caches.ehcache.LoggingEhcache"><!-- <cache type="org.mybatis.caches.ehcache.EhcacheCache"> --> <property name="timeToIdleSeconds" value="3600"/><!--1 hour--> <property name="timeToLiveSeconds" value="3600"/><!--1 hour--> <property name="maxEntriesLocalHeap" value="10000"/> <property name="maxEntriesLocalDisk" value="10000000"/> </cache> <select id="findall" resultType="Map" useCache="true"><!-- 使用缓存 --> select * from users </select> <select id="findById" resultType="Map" parameterType="String" useCache="true"> select * from users where userName = #{userName} </select> <select id="findByIdPwd" resultType="Map" parameterType="Map"> select * from users where userName = #{userName} and userPwd=#{userPwd} </select> <insert id="insertByIdPwd" parameterType="Map"> insert into users(userName,userPwd) values (#{userName},#{userPwd}) </insert></mapper>4.在userDao中调用方法
public List<Map> findById(String userName){List<Map> list=null;SqlSession session = SF.getSession();list=session.selectList("findById",userName);session.commit();//使用缓存必须写return list;}
测试结果:
DEBUG - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - Configuring ehcache from ehcache.xml found in the classpath: file:/F:/myeclipse%20%20workspace/test08021/WebRoot/WEB-INF/classes/ehcache.xmlDEBUG - Configuring ehcache from URL: file:/F:/myeclipse%20%20workspace/test08021/WebRoot/WEB-INF/classes/ehcache.xmlDEBUG - Configuring ehcache from InputStreamDEBUG - Disk Store Path: F:\ehcache111DEBUG - Creating new CacheManager with default configDEBUG - propertiesString is null.DEBUG - No CacheManagerEventListenerFactory class specified. Skipping...DEBUG - No BootstrapCacheLoaderFactory class specified. Skipping...DEBUG - CacheWriter factory not configured. Skipping...DEBUG - No CacheExceptionHandlerFactory class specified. Skipping...DEBUG - Initialized net.sf.ehcache.store.MemoryStore for it.com.daoWARN - diskStorePath 'F:\ehcache111' is already used by an existing CacheManager either in the same VM or in a different process.The diskStore path for this CacheManager will be set to F:\ehcache111\ehcache_auto_created7300060912575425752diskstore.To avoid this warning consider using the CacheManager factory methods to create a singleton CacheManager or specifying a separate ehcache configuration (ehcache.xml) for each CacheManager instance.DEBUG - Using diskstore path F:\ehcache111\ehcache_auto_created7300060912575425752diskstoreDEBUG - Holding exclusive lock on F:\ehcache111\ehcache_auto_created7300060912575425752diskstore\.ehcache-diskstore.lockDEBUG - Failed to delete file it%002ecom%002edao.dataDEBUG - Failed to delete file it%002ecom%002edao.indexDEBUG - Matching data file missing (or empty) for index file. Deleting index file F:\ehcache111\ehcache_auto_created7300060912575425752diskstore\it%002ecom%002edao.indexDEBUG - Failed to delete file it%002ecom%002edao.indexDEBUG - Initialised cache: it.com.daoDEBUG - CacheDecoratorFactory not configured for defaultCache. Skipping for 'it.com.dao'.DEBUG - Cache Hit Ratio [it.com.dao]: 0.0DEBUG - Opening JDBC ConnectionDEBUG - Created connection 1763371495.DEBUG - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.Connection@691ae9e7]DEBUG - ooo Using Connection [com.mysql.jdbc.Connection@691ae9e7]DEBUG - ==> Preparing: select * from users where userName = ? DEBUG - ==> Parameters: admire(String)TRACE - <== Columns: userName, userPwd, Ename, Email, Logo, userIdTRACE - <== Row: admire, 111111, 1111, 11111, 12, 1DEBUG - <== Total: 1DEBUG - put added 0 on heap[{Email=11111, Ename=1111, Logo=12, userId=1, userPwd=111111, userName=admire}]DEBUG - fault removed 0 from heapDEBUG - fault added 0 on diskDEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.[{Email=11111, Ename=1111, Logo=12, userId=1, userPwd=111111, userName=admire}]DEBUG - Cache Hit Ratio [it.com.dao]: 1.0DEBUG - remove deleted 0 from heapDEBUG - remove deleted 0 from disk
二.注解的写法
注解的写法就相对简单了,只需要在接口文件中
package it.com.db;import java.util.List;import java.util.Map;import org.apache.ibatis.annotations.CacheNamespace;import org.apache.ibatis.annotations.Delete;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Options;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.cache.decorators.LruCache;//配置缓存@CacheNamespace(size=100,eviction=LruCache.class,implementation=org.mybatis.caches.ehcache.EhcacheCache.class)public interface IUsersMapper {//打开缓存@Options(useCache=true)@Select("select * from users")public List<Map> findAll();@Select("select count(1) from users where userName=#{userName}")public int findById(@Param("userName") String userName);//存储过程@Select("call pp11()")public List<Map> findAll_a();}
测试结果:
public int findById(String userName){SqlSession session = SF.getSession();IUsersMapper um = session.getMapper(IUsersMapper.class);int n = um.findById(userName);session.commit();return n;}
public static void main(String[] args) {// TODO Auto-generated method stubUsersDao user = new UsersDao();System.out.println(user.findById("admire"));System.out.println(user.findById("admire"));}
DEBUG - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - Configuring ehcache from ehcache.xml found in the classpath: file:/F:/myeclipse%20%20workspace/test08021/WebRoot/WEB-INF/classes/ehcache.xmlDEBUG - Configuring ehcache from URL: file:/F:/myeclipse%20%20workspace/test08021/WebRoot/WEB-INF/classes/ehcache.xmlDEBUG - Configuring ehcache from InputStreamDEBUG - Disk Store Path: F:\ehcache111DEBUG - Creating new CacheManager with default configDEBUG - propertiesString is null.DEBUG - No CacheManagerEventListenerFactory class specified. Skipping...DEBUG - No BootstrapCacheLoaderFactory class specified. Skipping...DEBUG - CacheWriter factory not configured. Skipping...DEBUG - No CacheExceptionHandlerFactory class specified. Skipping...DEBUG - Initialized net.sf.ehcache.store.MemoryStore for it.com.daoWARN - diskStorePath 'F:\ehcache111' is already used by an existing CacheManager either in the same VM or in a different process.The diskStore path for this CacheManager will be set to F:\ehcache111\ehcache_auto_created7300060912575425752diskstore.To avoid this warning consider using the CacheManager factory methods to create a singleton CacheManager or specifying a separate ehcache configuration (ehcache.xml) for each CacheManager instance.DEBUG - Using diskstore path F:\ehcache111\ehcache_auto_created7300060912575425752diskstoreDEBUG - Holding exclusive lock on F:\ehcache111\ehcache_auto_created7300060912575425752diskstore\.ehcache-diskstore.lockDEBUG - Failed to delete file it%002ecom%002edao.dataDEBUG - Failed to delete file it%002ecom%002edao.indexDEBUG - Matching data file missing (or empty) for index file. Deleting index file F:\ehcache111\ehcache_auto_created7300060912575425752diskstore\it%002ecom%002edao.indexDEBUG - Failed to delete file it%002ecom%002edao.indexDEBUG - Initialised cache: it.com.daoDEBUG - CacheDecoratorFactory not configured for defaultCache. Skipping for 'it.com.dao'.DEBUG - Cache Hit Ratio [it.com.dao]: 0.0DEBUG - Opening JDBC ConnectionDEBUG - Created connection 1763371495.DEBUG - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.Connection@691ae9e7]DEBUG - ooo Using Connection [com.mysql.jdbc.Connection@691ae9e7]DEBUG - ==> Preparing: select * from users where userName = ? DEBUG - ==> Parameters: admire(String)TRACE - <== Columns: userName, userPwd, Ename, Email, Logo, userIdTRACE - <== Row: admire, 111111, 1111, 11111, 12, 1DEBUG - <== Total: 1DEBUG - put added 0 on heap[{Email=11111, Ename=1111, Logo=12, userId=1, userPwd=111111, userName=admire}]DEBUG - fault removed 0 from heapDEBUG - fault added 0 on diskDEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.DEBUG - PooledDataSource forcefully closed/removed all connections.[{Email=11111, Ename=1111, Logo=12, userId=1, userPwd=111111, userName=admire}]DEBUG - Cache Hit Ratio [it.com.dao]: 1.0DEBUG - remove deleted 0 from heapDEBUG - remove deleted 0 from disk
阅读全文
0 0
- mybatis缓存文件的配置
- MyBatis的缓存配置(Cache)
- mybatis的二级缓存--配置redis缓存
- mybatis注解配置缓存的方法
- MyBatis自带的缓存配置(Cache)
- mybatis的缓存配置--ehcache.xml(缓存配置文件)
- Mybatis配置缓存
- MyBatis缓存配置
- Mybatis redis 缓存配置
- MyBatis缓存配置
- mybatis缓存配置
- Mybatis配置分布式缓存
- Mybatis缓存配置
- mybatis配置ehcache缓存
- Mybatis缓存及配置
- MyBatis缓存配置
- Mybatis日志文件的配置
- 关于mybatis缓存配置讲解
- MainThread agent ERROR Could not determine hostname or ip address; proceeding.
- SolidWorks 2017 SP2 Premium Multilanguge Win64 1DVD
- 初次使用servlet实现对数据的增删改查
- JDK源码解析之LinkedList
- QT Basic 014 Model/View programming (模型、视图编程)
- mybatis缓存文件的配置
- Web测试方法大全
- Mac中允许任何来源的app安装
- 设计模式之观察者模式
- linux课程培训哪的好?
- 微信小程序使用百度api获取天气信息 —— 微信小程序教程系列
- struts搭建简单web工程步骤
- 关于$(this)和this、[object object]和[object HTMLImageElement]区别和处理
- Python数据可视化之Matplotlib基础