最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

resultMap多用于多表查詢間的映射關(guān)系, 例如 :

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

建立部門表和員工表

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;
    // 一個員工關(guān)聯(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();
}

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

    <resultMap id="employeeMap" type="Employee">
        <!--主鍵列-->
        <id column="id" property="id"/>
        <!--其他屬性映射-->
        <result property="name" column="ename"/>
        <result property="age" column="age"/>
        <!--一對一關(guān)聯(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 是唯一標(biāo)識 , 相當(dāng)于名字 , 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 我們就可以得到自己想要的映射關(guān)系

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

相關(guān)文章

  • 淺談Java中的Queue家族

    淺談Java中的Queue家族

    Java中Collection集合有三大家族List,Set和Queue。當(dāng)然Map也算是一種集合類,但Map并不繼承Collection接口。List,Set在我們的工作中會經(jīng)常使用,通常用來存儲結(jié)果數(shù)據(jù),而Queue由于它的特殊性,通常用在生產(chǎn)者消費者模式中。今天這篇文章將帶大家進(jìn)入Queue家族。
    2021-06-06
  • Spring和SpringBoot有哪些區(qū)別

    Spring和SpringBoot有哪些區(qū)別

    相信對于用了 SpringBoot很久的同學(xué)來說,還不是很理解 SpringBoot到底和 Spring有什么區(qū)別,看完文章中的比較,或許你有了不同的答案和看法。
    2020-10-10
  • JavaAPI的使用方法詳解

    JavaAPI的使用方法詳解

    這篇文章主要介紹了JavaAPI的使用方法詳解,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • Springboot?引入?Redis?并配置序列化并封裝RedisTemplate?

    Springboot?引入?Redis?并配置序列化并封裝RedisTemplate?

    這篇文章主要介紹了Springboot?引入?Redis?并配置序列化并封裝RedisTemplate。文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • SpringBoot校園綜合管理系統(tǒng)實現(xiàn)流程分步講解

    SpringBoot校園綜合管理系統(tǒng)實現(xiàn)流程分步講解

    這篇文章主要介紹了SpringBoot+Vue實現(xiàn)校園綜合管理系統(tǒng)流程分步講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • Java窗口精細(xì)全方位講解

    Java窗口精細(xì)全方位講解

    這篇文章呢,將會系統(tǒng)的精細(xì)的教會鐵鐵們?nèi)绾巫约簩懸粋€完整的窗口;看完之后窗口穩(wěn)拿下!!!所以呢由于詳細(xì),知識點多,可能有點長,鐵鐵們慢慢仔細(xì)閱讀吧;文章寫的還是一如既往快樂的,哈哈哈
    2021-08-08
  • Netty學(xué)習(xí)教程之Netty與Marshalling結(jié)合發(fā)送對象

    Netty學(xué)習(xí)教程之Netty與Marshalling結(jié)合發(fā)送對象

    Netty是由JBOSS提供的一個Java開源框架,之前已經(jīng)給大家簡單介紹了一些基礎(chǔ)與使用,下面這篇文章主要給大家介紹了關(guān)于Netty與Marshalling結(jié)合發(fā)送對象的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Java源碼解析阻塞隊列ArrayBlockingQueue常用方法

    Java源碼解析阻塞隊列ArrayBlockingQueue常用方法

    今天小編就為大家分享一篇關(guān)于Java源碼解析阻塞隊列ArrayBlockingQueue常用方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • java如何使用正則表達(dá)式限制特殊字符的個數(shù)

    java如何使用正則表達(dá)式限制特殊字符的個數(shù)

    這篇文章主要介紹了java如何使用正則表達(dá)式限制特殊字符的個數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java static方法用法實戰(zhàn)案例總結(jié)

    Java static方法用法實戰(zhàn)案例總結(jié)

    這篇文章主要介紹了Java static方法用法,結(jié)合具體案例形式總結(jié)分析了java static方法功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-09-09

最新評論

阳曲县| 全州县| 巢湖市| 渝中区| 泽普县| 义马市| 公主岭市| 武威市| 榕江县| 揭东县| 黑山县| 陆川县| 阿克苏市| 六安市| 南溪县| 旌德县| 罗田县| 商洛市| 沽源县| 阜宁县| 夏津县| 增城市| 余庆县| 富平县| 达尔| 信丰县| 湘潭市| 蓬安县| 普格县| 延川县| 泽库县| 天津市| 乌兰察布市| 崇信县| 泾阳县| 富平县| 麻栗坡县| 同心县| 东方市| 常德市| 津市市|