前言
在上篇MyBatis基础篇中我们独立使用MyBatis构建了一个简单的数据库访问程序,可以实现单表的基本增删改查等操作,通过该实例我们可以初步了解MyBatis操作数据库需要的一些组成部分(配置文件、实体类、SQL映射文件、Mapper接口等等)和重要对象(SqlSession、Mapper实例等等)。有了整体认知后,我们就可以进一步深入学习MyBatis的使用,resultMap本文主要围绕resultMap展开。
resultMap作为MyBatis的Sql映射文件中重要的元素之一,主要用来实现复杂的结果映射,其子元素结构如下:
aaarticlea/png;base64,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" alt="" />
constructor
constructor是构造器的意思,对反射有基本了解的都应该不会陌生。借此我们先回顾一下前面定义的一个简单resulMap映射内容
<resultMap type="person" id="personResultMap" >
<id column="id" property="id" />
<result column="name" property="name" />
<result column="gender" property="gender" />
</resultMap>
上面是一个典型的在resultMap中定义数据表与实体类的映射关系,type这里用的别名指向Person类,id为该映射的唯一标识,用于在后面我们的定义语句中引用,内部的id和result分别对应主键和普通字段定义,column指数据表中字段名,property指实体类中属性名。在之前的示例中,通过这个一个映射关系,我们查询出来的结果就转化为了一个Person类对象。
这个Person类对象并非由我们创建出来,而是由mybatis调用了Person类的默认无参构造函数创建对象,再调用set方法为对象赋值,这样才返回了我们想要的结果。下面结合之前的示例,做一些改动以便观察。
package com.mmm.pojo;
/**
* Person实体类
* */
public class Person { private String id; private String name; private String gender; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
System.out.println("为主键属性id赋值");
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
System.out.println("为属性name赋值");
} public String getGender() {
return gender;
} public void setGender(String gender) {
this.gender = gender;
System.out.println("为属性gender赋值");
} public Person() {
System.out.println("调用无参构造创建对象");
}
}
<select id="selectById"resultMap="personResultMap">
select * from `person` where id = #{id}
</select>
调用该查找方法后会看到控制台输出如下信息:
aaarticlea/png;base64,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" alt="" />
说明确实是mybatis调用了这些方法帮我们创建了对象,基于构造器。说起构造器,在我们定义的pojo实体类中,简单的私有属性加上set/get方法声明即完成,在java类中,会默认提供一个无参的构造方法,例如这里的Person类
public Person(){}
我们使用语句 Person p = new Person();这里即调用的该无参构造。方法都可以重载,构造方法也不例外。但是很重要的一点,我们在重载构造方法后,原本默认提供的无参构造就无法使用了,需要显示声明,这点下面会给出示例。resultMap中constructor就是基于重载的带参构造方法创建对象,如下:
<resultMap type="person" id="personResultMap" >
<constructor>
<idArg column="id" javaType="string" />
<arg column="name" javaType="string" />
<arg column="gender" javaType="string" />
</constructor>
</resultMap>
在实体类中添加重载的带参构造方法
public Person(String id, String name, String gender) {
this.id = id;
this.name = name;
this.gender = gender;
System.out.println("直接调用带参构造函数创建对象");
}
再次调用查找方法后会看到控制台输出如下信息:
aaarticlea/png;base64,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" alt="" />
这样一来,使用constructor同样拿到了数据。
这个时候如果我们把实体类中的默认无参构造方法的显示声明删除,即只有一个带参的构造方法,这样我们再把Sql映射文件中<resultMap>内容还原成文中一开始定义的典型<id><result>等,再调用方法,为了更明显,在地址栏中通过controller层层调用到该方法,报错乍一看,一大串异常,其实标题末尾一句话就出来了
aaarticlea/png;base64,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" alt="" width="513" height="46" />
不存在该方法,该方法指的就是Person实体类中的无参构造方法,在之前我们没有显示声明没有问题,那是因为在类中如果没有任何的构造方法声明,会默认提供一个无参构造;但是我们使用construtor的时候在实体类中重载了一个带参的构造方法,使得原本默认的无参构造无法使用了,这里如果还要需要使用,可以在实体类中显示声明。
id、result
前面的单表典型基本映射就是由这两个元素组成,所以应该比较好理解。id和result都用于将表中字段和实体类中属性建立起映射关系,区别是id是用于主键字段的映射,result用于普通字段映射。两个元素中都有5个属性供定义,分别是column、property、javaType、jdbcType、typeHandler。
column:这里用于单表查询的话可以简单的理解为数据表中字段,前面也是类似处理,但是实际上并不是这么简单,例如我们在写SQL语句时经常会使用到别名,别名的好处就不复述了,特别是进行多表查询时,这里我们在SQL映射文件的<select>语句中也可以使用别名,这个别名与这里的column就对应上了,不注意这点的话可能出问题,后面介绍关联查询会有示例。
property:实体类中定义的与表字段对应的属性
javaType:类型这里可以使用全名,也可以使用别名,例如上面的string就是一个别名。我们在定义基本的实体类映射时,mybatis一般可以自动确定类型。
jdbcType:这里是指针对数据表字段方的jdbc类型,mybatis中支持下面的 JDBC 类型。
aaarticlea/png;base64,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" alt="" width="545" height="107" />
typeHandler:在使用数据库创建表,定义字段名,选择字段类型时,例如MySql中字符串类型varchar,然后我们使用mybatis映射到实体类中变成Java字符串类型String,这个转换过程是怎么实现的?其中mybatis就已经预定义了一些类型处理器,也就是这个typeHandler,我们也可以根据需要自定义一些类型处理器。
association(对一)
association意思为联系、关联,针对单个(一个)对象,典型的一对一、多对一关联映射关系都可以通过该元素实现,下面是基本定义内容。
<association property="关联的对象在本对象实体类中的属性名" column="关联表的主键在本表中的字段名" javaType="关联对象的实体类类型(可用别名)">
<id column="ID" property="id" />
<result column="数据表字段名" property="实体类属性名" />
<result column="数据表字段名" property="实体类属性名" />
...
</association>
通过上面的关联定义,然后在<select>元素中定义多表关联查询语句即可实现关联查询效果。这个<association>内部的<id><result>等元素,我们不一定要这样定义,也可以通过额外定义一个resultMap填入这些元素,然后<association>有一个resultMap属性,值就填额外的reslutMap的id,这样也可以实现关联映射。除此之外,也可以通过一个关联的嵌套查询语句实现,即额外定义一个针对关联表的<select>元素,然后<association>有一个select属性,值就填<select>的id,这样同样能实现。
collection(对多)
collection意为集合,这里主要用于关联多个对象的映射关系定义,例如典型的一对多,下面是基本定义内容。
<collection property="关联的对象在本对象实体类中的属性名" column="本表的主键在关联表中的字段名" ofType="关联集合中对象的实体类类型(可用别名)">
<id column="ID" property="id" />
<result column="数据表字段名" property="实体类属性名" />
<result column="数据表字段名" property="实体类属性名" />
...
</collection>
类似上面的association,也可以额外定义<select>元素,然后引入,从而实现关联查询。
关联映射应用得较多,关联属性也相对复杂一些,光凭文字和片段描述很难快速理解,下面以一个一对多和多对一结合的示例来整体应用一次。
关联映射实例(一对多/多对一)
背景关系
aaarticlea/png;base64,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" alt="" />
这里以部门作为查询的实体对象,从图中不难理解,部门与公司是多对一关系,部门与员工是一对多关系,我们查询一个部门对象时,要把这个部门所属的公司信息查出来,还要把部门下面的所有员工信息查出来。
准备工作
这里对象分公司、部门、员工一共三类,所以首先准备三张数据表,结构如下
aaarticlea/png;base64,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" alt="" />aaarticlea/png;base64,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" alt="" />
aaarticlea/png;base64,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" alt="" />
aaarticlea/png;base64,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" alt="" />
这里要理解一点,基于主键关联,不论是一对多,还是多对一,在“多“”的一方表中,都有一个与“一”的一方表主键对应的字段,例如这里的部门表中COMPANY_ID和员工表中的DEPT_ID,用来关联对应表。
新建maven工程,这里不需要建web项目,普通的java项目就行。pom依赖可以参照SSM框架开发web项目系列(一) 环境搭建篇。整体结构如下所示
aaarticlea/png;base64,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" alt="" />
然后新建三个对象实体类,如下所示
package com.mmm.pojo;
//公司
public class Company {
private Integer id; //主键
private String companyName; //公司名称 public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
@Override
public String toString() {
return "Company [id=" + id + ", companyName=" + companyName + "]";
}
}
package com.mmm.pojo; import java.util.List;
//部门
public class Dept {
private Integer id; //主键
private String deptName; //部门名称
private Company company; //部门所属公司---------多对一
private List<Emp> empList; //部门下面员工---------一对多 public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
public List<Emp> getEmpList() {
return empList;
}
public void setEmpList(List<Emp> empList) {
this.empList = empList;
}
@Override
public String toString() {
return "Dept [id=" + id + ", deptName=" + deptName + ", company=" + company + ", empList=" + empList + "]";
} }
package com.mmm.pojo;
//员工实体类
public class Emp {
private Integer id; //主鍵
private String name; //员工姓名
private String gender; //员工性别 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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Emp [id=" + id + ", name=" + name + ", gender=" + gender + "]";
}
}
配置文件(mybatis-config.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 这里可以定义类的别名,在mapper.xml文件中应用会方便很多 -->
<typeAliases>
<typeAlias alias="emp" type="com.mmm.pojo.Emp" />
<typeAlias alias="dept" type="com.mmm.pojo.Dept" />
<typeAlias alias="company" type="com.mmm.pojo.Company" />
</typeAliases>
<!-- 环境配置 -->
<environments default="envir">
<environment id="envir">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/ssm?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/mmm/mapper/deptMapper.xml"/>
</mappers>
</configuration>
mapper接口及对应sql映射文件
package com.mmm.mapper;
import com.mmm.pojo.Dept;
public interface DeptMapper {
public Dept selectById(Integer id);
}
<?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="com.mmm.mapper.DeptMapper">
<resultMap type="dept" id="deptResultMap">
<!-- 下面的column就是前面说的要注意的,如果简单的认为是字段名会出问题 -->
<id column="d_id" property="id" />
<result column="d_name" property="deptName" />
<!-- 一个公司下面多个部门,部门与公司,多对一关系 -->
<association property="company" column="COMPANY_ID" javaType="company" resultMap="companyResultMap">
<!-- <id column="ID" property="id" />
<result column="COMPANY_NAME" property="companyName" /> -->
</association>
<!-- 一个部门下有多个员工,部门与员工,一对多关系 -->
<collection property="empList" column="DEPT_ID" ofType="emp">
<id column="ID" property="id" />
<result column="EMP_NAME" property="name" />
<result column="EMP_GENDER" property="gender" />
</collection>
</resultMap> <!-- 也可以通过类似下面的定义然后引入到association中,association的resultMap属性值对应下面resultMap的id -->
<!-- <resultMap type="company" id="companyResultMap">
<id column="ID" property="id" />
<result column="COMPANY_NAME" property="companyName" />
</resultMap> --> <!-- 根据主键id查找记录 -->
<select id="selectById" resultMap="deptResultMap">
select e.*,d.ID AS d_id,d.DEPT_NAME AS d_name,c.* from `TBL_EMP` e, `TBL_DEPT` d, `TBL_COMPANY` c where d.ID = #{id} and d.COMPANY_ID = c.id and d.ID = e.DEPT_ID;
</select>
</mapper>
最后,测试一下是否能实现关联查询
package com.mmm.test; import java.io.IOException;
import java.io.Reader; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test; import com.mmm.mapper.DeptMapper;
import com.mmm.pojo.Dept; public class TestMyBatis { @Test
public void testCore() throws IOException {
//直接实例SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//MyBatis配置文件路径
String path = "mybatis-config.xml";
//通过路径获取输入流
Reader reader = Resources.getResourceAsReader(path);
//通过reader构建sessionFactory
SqlSessionFactory sessionFactory = builder.build(reader);
//获取SqlSession对象
SqlSession sqlSession = sessionFactory.openSession();
//获取Mapper实例
DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
//根据id查找制定的部门,并关联查询出其公司和员工信息
Dept dept = mapper.selectById(10001);
System.out.println(dept);
}
}
控制台输出信息过长,复制下来粘贴如下内容:
Dept [id=10001, deptName=资产部, company=Company [id=10003, companyName=公司一], empList=[Emp [id=10001, name=员工一, gender=男], Emp [id=10002, name=员工二, gender=男], Emp [id=10003, name=员工三, gender=男]]]
可以看到,至此基本实现了,查询部门时,也关联查询出了所属公司信息、下面所有部门员工信息。
我们在浏览网站,点击链接跳转,每个页面的刷新,大多是不断在请求查询数据库中的数据,当然也不全是查询,例如会有日志记录,也是插入操作等等。查询是一个比较重要的内容,怎样关联查询,怎么优化查询语句,减少查询次数,提高查询速度等等都是需要去思考和学习的地方。