中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis中resultMap怎么定義及使用

發布時間:2022-04-27 14:38:04 來源:億速云 閱讀:196 作者:iii 欄目:開發技術

這篇文章主要介紹“mybatis中resultMap怎么定義及使用”,在日常操作中,相信很多人在mybatis中resultMap怎么定義及使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”mybatis中resultMap怎么定義及使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

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

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

    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中創建 Dept(部門)類 和 Employee(員工)類

    public class Employee {       //員工類
        private Integer id;
        private String name;
        private Integer age;
        // 一個員工關聯一個部門
        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();
    }

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

        <resultMap id="employeeMap" type="Employee">
            <!--主鍵列-->
            <id column="id" property="id"/>
            <!--其他屬性映射-->
            <result property="name" column="ename"/>
            <result property="age" column="age"/>
            <!--一對一關聯-->
            <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怎么定義及使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    家居| 调兵山市| 柳州市| 黄山市| 扎鲁特旗| 区。| 丹棱县| 如皋市| 峨眉山市| 休宁县| 仁怀市| 邛崃市| 绥棱县| 普定县| 元江| 扎兰屯市| 东兴市| 昌黎县| 繁峙县| 鲁山县| 涪陵区| 眉山市| 衡阳市| 嵩明县| 高雄市| 麦盖提县| 尖扎县| 荃湾区| 宁陕县| 陇川县| 三台县| 思茅市| 南城县| 阿拉善右旗| 嫩江县| 苏尼特左旗| 巴里| 吴堡县| 雅江县| 克东县| 合江县|