广告
返回顶部
首页 > 资讯 > 精选 >mybatis中resultMap怎么定义及使用
  • 666
分享到

mybatis中resultMap怎么定义及使用

2023-06-30 11:06:00 666人浏览 薄情痞子
摘要

这篇文章主要介绍“mybatis中resultMap怎么定义及使用”,在日常操作中,相信很多人在mybatis中resultMap怎么定义及使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mybatis中r

这篇文章主要介绍“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怎么定义及使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: mybatis中resultMap怎么定义及使用

    本文链接: https://www.lsjlt.com/news/328284.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • mybatis中resultMap怎么定义及使用
      这篇文章主要介绍“mybatis中resultMap怎么定义及使用”,在日常操作中,相信很多人在mybatis中resultMap怎么定义及使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mybatis中r...
      99+
      2023-06-30
    • mybatis深入讲解resultMap的定义及用法
              我们知道 ,mybatis框架存在pojo对象映射 , 直接将查询到的结果封装到对象中给我们返回, 但如果数据库的中的列和ja...
      99+
      2022-11-13
    • 怎么在mybatis中使用resultmap
      本篇文章给大家分享的是有关怎么在mybatis中使用resultmap,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SQL 映射XML 文件是所有sql语句放置的地方。需要定义...
      99+
      2023-05-31
      mybatis resultmap
    • Mybatis中resultMap怎么用
      小编给大家分享一下Mybatis中resultMap怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!resultMap是Mybatis最强大的元素,它可以将查...
      99+
      2023-06-20
    • mybatis-plus中resultMap怎么用
      小编给大家分享一下mybatis-plus中resultMap怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!不一致,那么用来接收查询出来的result对应的...
      99+
      2023-06-25
    • Mybatis中resultMap的Colum和property怎么用
      本文小编为大家详细介绍“Mybatis中resultMap的Colum和property怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis中resultMap的Colum和property怎么用”文章能帮助大家解决疑惑,下...
      99+
      2023-06-26
    • Mybatis的@ResultMap,@Results,@Result注解怎么使用
      本篇内容主要讲解“Mybatis的@ResultMap,@Results,@Result注解怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mybatis的@ResultMap,@Resu...
      99+
      2023-06-21
    • 怎么使用MyBatis高级映射ResultMap解决属性问题
      本篇内容介绍了“怎么使用MyBatis高级映射ResultMap解决属性问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ResultMap...
      99+
      2023-07-05
    • VB中的数组怎么定义及使用
      在VB中,可以使用`Dim`关键字来定义数组。定义数组时需要指定数组的长度或维度。1. 一维数组的定义和使用:```vbDim ar...
      99+
      2023-09-15
      VB
    • c++抽象类怎么定义及使用
      C++中的抽象类是指含有纯虚函数的类,它不能被实例化,只能被继承。抽象类用于定义一个接口,具体的实现由派生类完成。抽象类的定义通常包...
      99+
      2023-10-12
      c++
    • mybatis中几种typeHandler的定义使用详解
      1.存储到数据库, 将LONG数组转换成字符串;从数据库获取数据, 将字符串转为LONG数组 package com.winturn.utils.handler; import...
      99+
      2022-11-12
    • Vue过滤器怎么自定义及使用
      这篇文章主要介绍“Vue过滤器怎么自定义及使用”,在日常操作中,相信很多人在Vue过滤器怎么自定义及使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue过滤器怎么自定义及使用”的疑惑有所帮助!接下来,请跟...
      99+
      2023-07-04
    • Mybatis是什么及怎么使用
      这篇文章主要介绍“Mybatis是什么及怎么使用”,在日常操作中,相信很多人在Mybatis是什么及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis是什么及怎么使用”的疑惑有所帮助!接下来...
      99+
      2023-07-05
    • JavaSE中抽象类与接口怎么定义及使用
      这篇文章主要介绍“JavaSE中抽象类与接口怎么定义及使用”,在日常操作中,相信很多人在JavaSE中抽象类与接口怎么定义及使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaSE中抽象类与接口怎么定义...
      99+
      2023-07-02
    • MyBatis Plus QueryWrapper及LambdaQueryWrapper怎么使用
      这篇文章主要介绍“MyBatis Plus QueryWrapper及LambdaQueryWrapper怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MyBatis Plus&n...
      99+
      2023-06-29
    • mybatis plus是什么及怎么使用
      这篇文章主要介绍“mybatis plus是什么及怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mybatis plus是什么及怎么使用”文章能帮助大家解决问题。一、什么...
      99+
      2023-06-30
    • Vue中的自定义指令有哪些及怎么使用
      本篇内容主要讲解“Vue中的自定义指令有哪些及怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue中的自定义指令有哪些及怎么使用”吧!1、什么是自定义指令vue 官方提供了 v-text...
      99+
      2023-06-30
    • Mybatis中怎么使用ResultMap解决属性名和数据库字段名不一致问题
      本篇内容介绍了“Mybatis中怎么使用ResultMap解决属性名和数据库字段名不一致问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前...
      99+
      2023-06-25
    • Mybatis中自定义实例化SqlSessionFactoryBean问题怎么解决
      本篇内容介绍了“Mybatis中自定义实例化SqlSessionFactoryBean问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
      99+
      2023-07-05
    • Spring中怎么使用ThreadPoolTaskExecutor自定义线程池及异步调用
      这篇文章主要介绍了Spring中怎么使用ThreadPoolTaskExecutor自定义线程池及异步调用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring中怎么使用ThreadPoolTaskExec...
      99+
      2023-06-29
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作