1、在mybatis的配置文件SlqMapConfig.xml文件中配置延迟加载一级开启二级缓存:
<settings>
<!-- 打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 将积极加载改为消极加载,消极加载就是按需加载 -->
<setting name="aggressiveLazyLoading" value="false" />
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
2、在mybatis的配置文件SlqMapConfig.xml中配置别名
<typeAliases>
<!-- 针对单个别名的定义 type:类型的路径 alias:别名 <typeAlias type="xb.cn.mybatis.po.User"
alias="user" /> -->
<!-- 批量别名的配置 指定包名,mybatis会自动的扫描PO类,自动的来定义别名,别名就是这个类名(首字母大写或小写都可以) -->
<package name="xb.cn.mybatis.po" />
</typeAliases>
3、在mybatis的配置文件SlqMapConfig.xml中配置所需要的映射文件机mapper.xml文件
<!-- 加载配置文件 -->
<mappers>
<!-- 这是通过resource方法加载映射文件 <mapper resource="sqlmap/UserMapper.xml" /> -->
<!--<mapper resource="mapper/UserMapper.xml" /> -->
<!-- 还可以通过接口加载映射文件 遵循规范:需要将mapper接口的类名与mapper.xml映射文件的名称保持一致,且在一个目录。 上面规范的前提是,使用mapper代理的方法 -->
<!--<mapper class="xb.cn.mybatis.mapper.UserMapper"/> -->
<!-- 批量的加载mapper ,同样的指定mapper接口的包名,mybatis自动扫描包下的所有mapper接口进行加载 遵循规范:需要将mapper接口的类名与mapper.xml映射文件的名称保持一致,且在一个目录。
上面规范的前提是,使用mapper代理的方法 -->
<package name="xb.cn.mybatis.mapper" />
</mappers>
4、在mybatis的配置文件SlqMapConfig.xml中配置JDBC的事务管理。
4.1、<!-- 加载db.properties配置文件 -->
<properties resource="db.properties" />
4.2、db.properties文件中配写数据库的四项基本操作。
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&&characterEncoding=UTF8
jdbc.user=root
jdbc.password=123456
4.3、配置相应的数据库的基本四项。
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}" />
<property name="url" value="${jdbc.jdbcUrl}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
注意在sqlMapConfig.xml文件中开启了二级缓存,但是还得在你需要的mapper.xml文件中再开启二级缓存。
<!-- 开启本mapper的namespace下的二级缓存 -->
<cache />
在开启了二级缓存后还得在相应的pojo类实现序列化
public class User implements Serializable{}:实现序列化的目的是为了将缓存数据取出执行反序列化操作,因为二级缓存数据存储介质多种多样,不一定在内存中。
对于一级缓存,mybatis默认开启一级缓存,不需要再去开启。一级缓存是在sqlsession范围中,而二级缓存是在namespace的范围中。