mysql懶載入 mybatis懶載入

2021-10-22 07:51:32 字數 2824 閱讀 2692

1.概念

懶載入就是按需載入,我們需要什麼的時候再去進行什麼操作。而且先從單錶查詢,需要時再從關聯表去關聯查詢,能很大提高資料庫效能,因為查詢單錶要比關聯查詢多張表速度要快。

在mybatis中,resultmap可以實現高階對映(使用association、collection實現一對一及一對多對映),association、collection具備延遲載入功能。

2.demo

1.建立部門表和員工表(ps:這裡員工表有乙個外來鍵對映的關係,實現一對多)

2.建立實體

@data

public class department

3.測試

1.test

@test

public void contextloads() {

list departments = userdao.getdepartment();

system.out.println("*****====only query department**********");

system.out.println("departmentname: "+departments.get(0).getname());

system.out.println("*****====query department and employee**********");

system.out.println("employeename: "+departments.get(0).getemployeelist().get(0).getname());

2.總結

當配置懶載入(fetchtype="lazy")時,可以看到控制台輸出,在只查詢部門時,僅查詢部門sql,在需要獲取員工時,才回去查詢涉及到員工的sql。

==> preparing: select * from department

==> parameters:

<== columns: id, name

<== row: 1, 開發部

<== row: 2, 產品部

<== row: 3, 人事部

<== total: 3

closing non transactional sqlsession [org.apache.ibatis.session.defaults.defaultsqlsession@216914]

*****====only query department**********

departmentname: 開發部

*****====query department and employee**********

==> preparing: select * from employee where department_id = ?

==> parameters: 1(integer)

<== columns: id, name, department_id

<== row: 1, 張三, 1

<== row: 4, 王健, 1

<== total: 2

employeename: 張三

當不配置懶載入(fetchtype="lazy")時,可以看到控制台輸出,在結果集之前sql全部執行。

==> preparing: select * from department

==> parameters:

<== columns: id, name

<== row: 1, 開發部

====> preparing: select * from employee where department_id = ?

====> parameters: 1(integer)

<==== columns: id, name, department_id

<==== row: 1, 張三, 1

<==== row: 4, 王健, 1

<==== total: 2

<== row: 2, 產品部

====> preparing: select * from employee where department_id = ?

====> parameters: 2(integer)

<==== columns: id, name, department_id

<==== row: 2, 李四, 2

<==== total: 1

<== row: 3, 人事部

====> preparing: select * from employee where department_id = ?

====> parameters: 3(integer)

<==== columns: id, name, department_id

<==== row: 3, 王二, 3

<==== total: 1

<== total: 3

closing non transactional sqlsession [org.apache.ibatis.session.defaults.defaultsqlsession@35764bef]

*****====only query department**********

departmentname: 開發部

*****====query department and employee**********

employeename: 張三

Mybatis延遲載入(懶載入)

將採用高階對映實現多表聯查時向資料庫發出的sql語句拆分成若干條單錶查詢的sql語句,當需要返回資料時才會向資料庫發出只針對當前資料的sql語句。需求 根據訂單編號,查詢訂單,並返回訂單詳情描述資訊實現延遲載入的前提條件 在settings中配置與延遲載入有關的屬性.column 查詢user的引數...

MyBatis 懶載入丶快取

2.一級快取 3.二級快取 1.1 概述 1.1 在主配置檔案中開啟對懶載入的支援 name lazyloadingenabled value true name aggressivelazyloading value false settings 1.2 多對一association標籤中使用延遲...

MyBatis學習(十二) 懶載入

通俗的講就是按需載入,我們需要什麼的時候再去進行什麼操作。而且先從單錶查詢,需要時再從關聯表去關聯查詢,能大大提高資料庫效能,因為查詢單錶要比關聯查詢多張表速度要快。在mybatis中,resultmap可以實現高階對映 使用association collection實現一對一及一對多對映 ass...