当前位置: 首页 > news >正文

建筑公司企业标语北京seo方法

建筑公司企业标语,北京seo方法,wordpress 功能小工具,宇宙企画网站第一章:MyBatis延迟加载策略 1. 延迟加载的概念 立即加载和延迟加载的区别,使用一对多的环境举例子。 立即加载:当前查询用户的时候,默认也把该用户所拥有的帐户信息查询出来了。 延迟加载:当前查询用户的时候&…

第一章:MyBatis延迟加载策略

1. 延迟加载的概念

立即加载和延迟加载的区别,使用一对多的环境举例子。

立即加载:当前查询用户的时候,默认也把该用户所拥有的帐户信息查询出来了。

延迟加载:当前查询用户的时候,没有把该用户所拥有的帐户信息查询出来,而是使用帐户数据的时候,再去查询账户的数据。

2. 立即加载和延迟加载的应用场景

例如查询账户的时候,可以直接把用户查询出来,即查询多对一,这个时候可以选择立即加载。

例如查询用户的时候,可以先不查账号信息,等需要使用帐户信息的时候,再去查询,选择延迟加载。

3. 多对一的延迟加载查询演示

在AccountMapper接口中编写方法

public List<Account> findAll();

编写配置文件和SQL语句

<?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.qcbyjy.mapper.AccountMapper">

<!-- 内连接的查询 -->

<select id="findAll" resultMap="accountMap">

SELECT * from account

</select>

<!-- 通过用户的id查询账户信息 -->

<select id="findByUid" parameterType="int" resultType="account">

select * from account where uid = #{uid}

</select

<!-- 配置映射 -->

<resultMap type="Account" id="accountMap">

<id column="id" property="id"/>

<result column="uid" property="uid"/>

<result column="money" property="money"/>

<!-- 配置延迟加载 -->

<association property="user" javaType="User" select="com.qcbyjy.mapper.UserMapper.findById" column="uid">

<id column="id" property="id"/>

<result column="username" property="username"/>

<result column="birthday" property="birthday"/>

<result column="sex" property="sex"/>

<result column="addresss" property="addresss"/>

</association>

</resultMap>

</mapper>

在UserMapper接口中编写方法

public User findById(Integer uid);

编写配置文件

<select id="findById" parameterType="int" resultType="User">

select * from user where id = #{id}

</select>

在SqlMapConfig.xml配置文件中开启延迟加载的配置

<settings>

<!-- 开启延迟加载 -->

<setting name="lazyLoadingEnabled" value="true"/>

<!-- 将积极加载改为消极加载及按需加载 -->

<setting name="aggressiveLazyLoading" value="false"/>

</settings>

编写测试方法

@Test

public void testFindAll() throws Exception {

// 调用方法

List<Account> list = mapper.findAll();

for (Account account : list) {

System.out.println("开始...");

System.out.println(account.getMoney());

System.out.println("结束...");

System.out.println();

}

}

4. 一对多的延迟加载查询演示

如果拷贝之前的项目,默认是不延迟加载的。编写的是SQL语句把所有数据全部都查询出来了。

在UserMapper中编写方法

public interface UserMapper {

public List<User> findAll();

}

在UserMapper.xml配置文件中编写配置和SQL语句

<?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.qcbyjy.mapper.UserMapper">

<!-- 一对多的查询 -->

<select id="findAll" resultMap="userMap">

select * from user

</select>

<!-- 数据封装 -->

<resultMap type="user" id="userMap">

<id column="id" property="id"/>

<result column="username" property="username"/>

<result column="birthday" property="birthday"/>

<result column="sex" property="sex"/>

<result column="addresss" property="addresss"/>

<!--

select="" 使用帐户的方法查询

column="id" 使用id值去查询账户

-->

<collection property="accounts" ofType="Account" select="com.qcbyjy.mapper.AccountMapper.findByUid" column="id" >

<id column="id" property="id"/>

<result column="uid" property="uid"/>

<result column="money" property="money"/>

</collection>

</resultMap>

</mapper>

在AccountMapper接口中编写方法

public List<Account> findByUid(Integer uid);

在AccountMapper.xml配置文件中编写配置和SQL语句

<!-- 通过用户的id查询账户信息 -->

<select id="findByUid" parameterType="int" resultType="account">

select * from account where uid = #{uid}

</select>

在SqlMapConfig.xml配置文件中开启延迟加载的配置

<settings>

<!-- 开启延迟加载 -->

<setting name="lazyLoadingEnabled" value="true"/>

<!-- 将积极加载改为消极加载及按需加载 -->

<setting name="aggressiveLazyLoading" value="false"/>

</settings>

编写测试方法

/**

* 测试查询

* @throws Exception

*/

@Test

public void testFindAll() throws Exception {

// 调用方法

List<User> list = mapper.findAll();

for (User user : list) {

System.out.println(user.getUsername());

System.out.println(user.getAccounts());

System.out.println("==============");

}

}

第二章:MyBatis框架的缓存

1. 缓存的概念

缓存的概念

在内存中临时存储数据,速度快,可以减少数据库的访问次数。

经常需要查询,不经常修改的数据,不是特别重要的数据都适合于存储到缓存中。

2. MyBatis的一级缓存

MyBatis的一级缓存也是SqlSession的缓存。

SqlSession对象中维护了一个Map集合,用于存储相互的缓存数据。

查询的时候,先从SqlSession的缓存中查找,如果有,直接返回。如果没有,查询数据库。

证明一级缓存的存在,通过用户id查询2次,查看结果。

/**

* 测试一级缓存是否存在

*/

@Test

public void testFindById() {

User user = mapper.findById(41);

System.out.println(user);

User user2 = mapper.findById(41);

System.out.println(user2);

}

一级缓存的原理分析

一级缓存底层使用的是Map集合,key存储的是执行的SQL语句,value存放的是查询的对象

BaseExecutor类的152行源码地方先查询缓存,再查询数据库。

一级缓存的生命周期和SqlSession的生命周期相同,SqlSession对象关闭,一级缓存也会关闭。

session.clearCache();调用该方法可以清空缓存

调用调用SqlSession的update、insert、delete、commit和close等方法的时候也会清空缓存。

http://www.hkea.cn/news/367165/

相关文章:

  • 郑州门户网站建设哪家好网站首页不收录
  • 网站制作营销型哪些网站可以发广告
  • 最新政府网站建设理念广州头条新闻最新
  • 济宁网站建设神华线上推广的三种方式
  • 我要表白网站在线制作如何做网站的教程
  • 福州论坛建站模板策划网络营销活动
  • 网站建设 天津百度市场应用官方app
  • 动态网站制作流程友情链接的定义
  • 企业网站开发方案免费建立一个网站
  • 网站引导页面制作的四个任务名称推广引流的10个渠道
  • 南宁网站建设制作后台网站关键词优化价格
  • 微信小程序商城制作公司宁波seo推广服务
  • 响应式购物网站公司seo是什么意思
  • 360未经证实的网站如何做电商运营方案
  • 网站建设类公司排名营销方案范文100例
  • 郑州网站设计 郑州网站开发网络优化有前途吗
  • 黑河做网站首页关键词排名优化
  • 网站二级域名怎么解析公司网络搭建
  • wordpress做网店win10优化大师是官方的吗
  • 弄个做网站公司产品宣传
  • 商品房建设信息网站googleplay商店
  • 菏泽 网站建设优化工具箱
  • 网站建设找哪家公司百度搜索热度
  • 网页设计论文引言北海百度seo
  • 网站空间哪家做的好网络营销的常用工具
  • 网站开发具体问题优化营商环境
  • wordpress4.5 火车头廊坊seo培训
  • 怎么做多个网站单点登录艺考培训
  • 网站怎么做双语种seo关键词如何设置
  • 用java做的游戏下载网站有哪些内容成都网络推广优化