MyBatis入门(四)
2017-09-28 15:04
411 查看
缓存
一级缓存
一级缓存跟Hibernate中的一级缓存是一样的,是由SqlSession来 > 进行管理的 这个缓存的存在和销毁 用户都可以不参与, 直接由我 > 们的SqlSession来进行维护。
二级缓存
二级缓存可以跨越session来实现缓存
1、要使用二级缓存首先的打开二级缓存
2、在需要缓存的mapper中配置cache
3、二级缓存的使用必须要序列化对象
4、不需要使用缓存 useCache=”false”
整合Ehcache缓存框架
需要的包
ehcache.xml文件放到src目录下
开启二级缓存:mybatis.xml
设置缓存的实现类 User.java
配置二级缓存:UserMapper.xml
UserMapper.java
Test01.java
一级缓存
一级缓存跟Hibernate中的一级缓存是一样的,是由SqlSession来 > 进行管理的 这个缓存的存在和销毁 用户都可以不参与, 直接由我 > 们的SqlSession来进行维护。
二级缓存
二级缓存可以跨越session来实现缓存
1、要使用二级缓存首先的打开二级缓存
<!--开启的是二级缓存--> <setting name="cacheEnabled" value="true"/>
2、在需要缓存的mapper中配置cache
<!--配置我们的二级缓存--> <cache></cache>
3、二级缓存的使用必须要序列化对象
4、不需要使用缓存 useCache=”false”
整合Ehcache缓存框架
需要的包
ehcache.xml文件放到src目录下
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"> <!--缓存文件存放的位置--> <diskStore path="E:/" /> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" maxElementsOnDisk="10000000" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"> <persistence strategy="localTempSwap" /> </defaultCache> </ehcache>
开启二级缓存:mybatis.xml
<?xml version="1.0" encoding="UTF-8" ?> <!--这个配置文件是不用记住的 只是需要 知道去哪里找就OK了 --> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!-- configuration:这个表示的是整个的配置信息 --> <configuration> <!-- 资源导入 --> <properties resource="db.properties"></properties> <!--配置我们的设置 懒惰性加载的第一步:打开懒惰性加载 关闭那个积极的 加载--> <settings> <!--是否使能延迟的加载--> <setting name="lazyLoadingEnabled" value="true"/> <!--关闭那个积极的加载--> <setting name="aggressiveLazyLoading" value="false"/> <!--开启的是二级缓存--> <setting name="cacheEnabled" value="true"/> </settings> <!-- 取别名 --> <typeAliases> <package name="com.wc.test01"/> </typeAliases> <!-- environments环境可以配置多个 比如 mySql orale? ... default:默认使用那个环境 后面的值 必须是后面的id mysql / oracle --> <environments default="mysql"> <!-- environment:这个表示的是配置的是单个的环境 id:给环境添加唯一的标识符 id可以随便取名 但是一般也要见名之意 --> <environment id="mysql"> <!--mybatis的事物只能交给JDBC去进行处理 --> <transactionManager type="JDBC" /> <!--这个表示的是数据库的连接池 type也只能写 pooled --> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name= 4000 "password" value="${password}" /> </dataSource> </environment> <environment id="oracle"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql:///iBatis001" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <!--配置的是映射的文件 --> <mappers> <package name="com.wc.test01"/> </mappers> </configuration>
设置缓存的实现类 User.java
public class User implements Serializable{ /** * */ private static final long serialVersionUID = 7691462254845077738L; private int uId; private String uName; private String uPassword; public User() { super(); } public User(int uId, String uName, String uPassword) { super(); this.uId = uId; this.uName = uName; this.uPassword = uPassword; } public int getuId() { return uId; } public void setuId(int uId) { this.uId = uId; } public String getuName() { return uName; } public void setuName(String uName) { this.uName = uName; } public String getuPassword() { return uPassword; } public void setuPassword(String uPassword) { this.uPassword = uPassword; } @Override public String toString() { return "User [uId=" + uId + ", uName=" + uName + ", uPassword=" + uPassword + "]"; } }
配置二级缓存:UserMapper.xml
<?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="com.wc.test01.UserMapper"> <!--配置我们的二级缓存--> <cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache> <!-- 返回的结果映射 --> <resultMap type="user" id="userMap"> <!-- property:写对象中属性的名字 column:属性对应的表中的字段 --> <!-- 主键 --> <id property="uId" column="uId"/> <!-- 普通字段 --> <result property="uName" column="uName"/> <result property="uPassword" column="uPassword"/> </resultMap> <!--插入的方法--> <insert id="add" parameterType="user"> insert into t_user(uName,uPassword) values(#{uName},#{uPassword}) </insert> <!-- 通过id查询 --> <select id="findById" parameterType="int" resultMap="userMap"> select * from t_user where 1=1 and id=#{id} </select> </mapper>
UserMapper.java
public interface UserMapper { /** * 添加用户的方法 * @param user */ void add(User user); User findById(int id); }
Test01.java
public static void main(String[] args) { SqlSession sqlSession=MyBatisUtils.getSqlSession(); UserMapper userMapper=sqlSession.getMapper(UserMapper.class); User user=userMapper.findById(2); MyBatisUtils.close(); System.out.println(user); SqlSession sqlSession2=MyBatisUtils.getSqlSession(); UserMapper userMapper2=sqlSession2.getMapper(UserMapper.class); User user2=userMapper2.findById(2); MyBatisUtils.close(); System.out.println(user2); SqlSession sqlSession3=MyBatisUtils.getSqlSession(); UserMapper userMapper3=sqlSession3.getMapper(UserMapper.class); User user3=userMapper3.findById(2); MyBatisUtils.close(); System.out.println(user3); }
相关文章推荐
- mybatis 详解(二)------入门实例(基于XML)
- MyBatis入门
- Mybatis最入门---Mapper文件配置详解(下)
- Mybatis最入门---动态查询(foreach)
- Maven+SpringMVC+Mybatis整合入门Demo
- Java框架篇---Mybatis 入门
- MyBatis快速入门
- mybatis(入门)
- myBatis入门学习_上
- 深入浅出MyBatis-快速入门
- Mybatis学习教程—— Mybatis入门实例
- Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建
- mybatis实战教程(mybatis in action),mybatis入门到精通
- Mybatis入门和简单Demo
- mybatis实战教程(mybatis in action),mybatis入门到精通
- mybatis入门基础(九)----逆向工程
- Mybatis入门看这一篇就够了
- Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis
- mybatis入门程序
- mybatis快速入门