亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis深入講解resultMap的定義及用法

 更新時間:2022年04月27日 11:37:43   作者:羨羨ˇ  
MyBatis的每一個查詢映射的返回類型都是ResultMap,當我們提供返回類型屬性是resultType時,MyBatis會自動給我們把對應值賦給resultType所指定對象的屬性,當我們提供返回類型是resultMap時,將數(shù)據(jù)庫中列數(shù)據(jù)復制到對象的相應屬性上,可以用于復制查詢,兩者不能同時用

        我們知道 ,mybatis框架存在pojo對象映射 , 直接將查詢到的結果封裝到對象中給我們返回, 但如果數(shù)據(jù)庫的中的列和java中類屬性名就是不一致,或者如果我們實際返回的對象需要去關聯(lián)其他的對象(也就是說,其他類的對象作為我們這個類的成員變量),那么這時候使用resultType肯定是不行的

這里我們則需要去定義 resultMap來完成我們的需求

定義resultMap的過程就是描述如何從數(shù)據(jù)庫結果集中去加載對象

resultMap多用于多表查詢間的映射關系, 例如 :

我們以部門和員工為例 , 一個部門有多個員工 , 一個員工屬于一個部門

建立部門表和員工表

CREATE TABLE dept(      -- 部門表
   id INT PRIMARY KEY AUTO_INCREMENT,
   NAME VARCHAR(10)
)
     
CREATE TABLE employee(  -- 員工表
   id INT PRIMARY KEY AUTO_INCREMENT,
   NAME VARCHAR(10),
   age INT,
   deptId INT
)

在java中創(chuàng)建 Dept(部門)類 和 Employee(員工)類

public class Employee {       //員工類
    private Integer id;
    private String name;
    private Integer age;
    // 一個員工關聯(lián)一個部門
    private Dept dept;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Dept getDept() {
        return dept;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }
    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", dept=" + dept +
                '}';
    }
}
public class Dept {
    private Integer id;
    private String name;
    // 一個部門有多個員工 ,使用List集合存儲
    private List<Employee> list;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<Employee> getList() {
        return list;
    }
    public void setList(List<Employee> list) {
        this.list = list;
    }
    @Override
    public String toString() {
        return "Dept{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", list=" + list +
                '}';
    }
}

首先我們查詢員工 , 定義dao層接口 : 

public interface EmployeeDao {
    // 查詢所有員工
    List<Employee> selectAllEmployee();
}

由于我們在對象中關聯(lián)了其他對象, 所以已經不是普通映射 ,這里我們定義 resultMap

    <resultMap id="employeeMap" type="Employee">
        <!--主鍵列-->
        <id column="id" property="id"/>
        <!--其他屬性映射-->
        <result property="name" column="ename"/>
        <result property="age" column="age"/>
        <!--一對一關聯(lián)-->
        <association property="dept" javaType="Dept">
            <!--需要映射的對象屬性-->
            <result property="name" column="dname"/>
        </association>
    </resultMap>
    <select id="selectAllEmployee" resultMap="employeeMap">
        SELECT e.id,e.name ename,e.age,d.name dname FROM employee e
                 LEFT JOIN dept d ON e.deptId = d.id
    </select>

resultMap 中的id 是唯一標識 , 相當于名字 , type類型是我們要返回的類型

<select>中使用resultMap , 傳入剛定義的id即可

這樣在java代碼中我們就可以得到我們想要的映射格式

查詢部門 : 

public interface DeptDao {
    //查詢部門
    List<Dept> selectDept();
}

定義與使用resultMap

<resultMap id="deptMap" type="Dept">
        <id column="id" property="id"/>
        <result column="dname" property="name"/>
        <!--collection為一對多 , 這里一個部門包含多個員工-->
        <collection property="list" javaType="List" ofType="Employee">
            <result property="name" column="ename"/>
        </collection>
    </resultMap>
    <select id="selectDept" resultMap="deptMap">
         SELECT d.id,d.name dname,e.name ename FROM dept d
              LEFT JOIN employee e ON d.id = e.deptId
    </select>

這里 JavaType我們選擇list , 因為用list集合來存儲多個員工信息, ofType是list集合中實際包含的對象名,這里是員工 Employee

通過resultMap 我們就可以得到自己想要的映射關系

到此這篇關于mybatis深入講解resultMap的定義及用法的文章就介紹到這了,更多相關mybatis resultMap內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot工程如何使用阿里云OSS傳輸文件

    springboot工程如何使用阿里云OSS傳輸文件

    阿里云對象存儲OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存儲服務,多種存儲類型供選擇,全面優(yōu)化存儲成本,非常適合存儲非結構化數(shù)據(jù),本文給大家介紹springboot工程使用阿里云OSS傳輸文件的操作,感興趣的朋友一起看看吧
    2023-08-08
  • Springboot日期轉換器實現(xiàn)代碼及示例

    Springboot日期轉換器實現(xiàn)代碼及示例

    這篇文章主要介紹了Springboot日期轉換器實現(xiàn)代碼及示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • idea全局設置Maven配置的實現(xiàn)步驟

    idea全局設置Maven配置的實現(xiàn)步驟

    本文主要介紹了idea全局設置Maven配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Spring Cloud Config 使用本地配置文件方式

    Spring Cloud Config 使用本地配置文件方式

    這篇文章主要介紹了Spring Cloud Config 使用本地配置文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java 多線程-鎖詳解及示例代碼

    java 多線程-鎖詳解及示例代碼

    本文主要介紹 Java 多線程鎖的基礎知識,這里整理了相關資料及示例代碼有興趣的小伙伴可以參考下
    2016-09-09
  • 關于spring項目中無法加載resources下文件問題及解決方法

    關于spring項目中無法加載resources下文件問題及解決方法

    在學習Spring過程中,TestContext框架試圖檢測一個默認的XML資源位置,再resources下創(chuàng)建了一個com.example的文件夾,執(zhí)行時,報錯,本文給大家介紹spring項目中無法加載resources下文件,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 如何在IDEA啟動多個Spring Boot工程實例(圖文)

    如何在IDEA啟動多個Spring Boot工程實例(圖文)

    這篇文章主要介紹了如何在IDEA啟動多個Spring Boot工程實例(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • MyBatis接口的簡單實現(xiàn)原理分析

    MyBatis接口的簡單實現(xiàn)原理分析

    這里僅僅舉個簡單例子來說明原理,不是完全針對MyBatis的,這種思想我們也可以應用在其他地方。地mybatis接口實現(xiàn)原理感興趣的朋友一起看看吧
    2017-07-07
  • 導致MyEclipse內存不足的原因分析及解決辦法

    導致MyEclipse內存不足的原因分析及解決辦法

    這篇文章主要介紹了導致MyEclipse內存不足的原因分析及解決辦法的相關資料,需要的朋友可以參考下
    2016-01-01
  • java中關于Map的三種遍歷方法詳解

    java中關于Map的三種遍歷方法詳解

    本篇文章是對java中關于Map的三種遍歷方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06

最新評論