您的位置:首页 > 新闻 > 会展 > 陕西建设网官网与陕西省建筑市场监管与诚信信息发布平台_软件界面设计的标准是什么_惠东seo公司_网络推广方案七步法

陕西建设网官网与陕西省建筑市场监管与诚信信息发布平台_软件界面设计的标准是什么_惠东seo公司_网络推广方案七步法

2025/6/4 16:40:54 来源:https://blog.csdn.net/Vaclee/article/details/147400366  浏览:    关键词:陕西建设网官网与陕西省建筑市场监管与诚信信息发布平台_软件界面设计的标准是什么_惠东seo公司_网络推广方案七步法
陕西建设网官网与陕西省建筑市场监管与诚信信息发布平台_软件界面设计的标准是什么_惠东seo公司_网络推广方案七步法

目录

一.为什么需要进行手动映射?

二.关联查询

1.使用resultMap进行映射

2.使用Connection进行映射


一.为什么需要进行手动映射?

当我们设计多表查询或关联查询时,表中含有相同的字段名或要进行关联查询时,MyBatis无法智能识别如何处理映射结果,就需要我们进行手动映射

二.关联查询

用员工表单和部门表单进行演示,对应的表单信息如下

create table employee(id int primary key auto_increment,name varchar(20),gender char(1),dep_id int,constraint employee_department foreign key(dep_id) references department(id)
)
create table department(id int primary key auto_increment,name varchar(10)
)

1.使用resultMap进行映射

我们需要用员工的id来查询他所在的部门

Employee实体类定义:

用一个Department对象来接收部门信息

public class Employee {private int id;private String name;private String gender;private Department department;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Department getDepartment() {return department;}public void setDepartment(Department department) {this.department = department;}@Overridepublic String toString() {return "Employee{" +"id=" + id +", name='" + name + '\'' +", gender='" + gender + '\'' +", department=" + department +'}';}
}

Employee接口定义:

public interface EmployeeDao {Employee findEmployeeById(int id);ArrayList<EmployeeDao> findEmployee();
}

Mapper定义:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Demo.dao.EmployeeDao"><resultMap id="EmployeeMap" type="Employee"><id property="id" column="id"/><result property="name" column="name"/><result property="gender" column="gender"/>
<!--    在关联表时,会自动创建映射对象    --><association property="department" javaType="Department"><id property="id" column="did"/><result property="name" column="dname"/></association></resultMap><select id="findEmployeeById" parameterType="int" resultMap="EmployeeMap">select e.name,e.gender,d.name dname,d.id didfrom employee e inner join department d on e.dep_id=d.idwhere e.id=#{id}</select><select id="findEmployee" resultMap="EmployeeMap">select e.name,e.gender,d.name dnamefrom employee e inner join department d on e.dep_id=d.id</select></mapper>

映射部分单独拿出来解释:

//id就是resultMap的名字,type就是映射对象的数据类型(对应的实体类)<resultMap id="EmployeeMap" type="Employee"><id property="id" column="id"/><result property="name" column="name"/><result property="gender" column="gender"/>
<!--    在关联表时,会自动创建映射对象    -->
//property接收映射结果对象的名字,javaType就是在java中对应的数据类型<association property="department" javaType="Department"><id property="id" column="did"/><result property="name" column="dname"/></association></resultMap>

2.使用Connection进行映射

我们需要查找某个部门的所有员工

Department对应的实体类:

public class Department {private int id;private String name;private ArrayList<Employee> employee;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public ArrayList<Employee> getArrayList() {return employee;}public void setArrayList(ArrayList<Employee> arrayList) {this.employee = arrayList;}@Overridepublic String toString() {return "Department{" +"id=" + id +", name='" + name + '\'' +", arrayList=" + employee +'}';}
}

Department对应的接口:

public interface DepartmentDao {Department findDepartmentById(int id);
}

Mapper:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Demo.dao.DepartmentDao"><resultMap id="departmentMap" type="Department"><id column="id" property="id"/><result column="name" property="name"/>
<!--   这里的property必须和对应实现类的集合名相同,javatype指的是java中的数据类型,ofType指的是集合的泛型    --><collection property="employee" javaType="arraylist" ofType="Employee"><id column="did" property="id"/><result column="ename" property="name"/><result column="egender" property="gender"/></collection></resultMap>
<!--  查询结果必须全部写在映射里面  --><select id="findDepartmentById" parameterType="int" resultMap="departmentMap">select e.name ename,e.gender egender,e.id eid,d.name,d.idfrom employee e inner join department d on e.dep_id=d.idwhere d.id = #{id}</select>
</mapper>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com