前言
MyBatis在进行查询映射时,查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。但当指定返回类型属性resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。
而当我们提供的返回类型是resultMap的时候,这就需要自己再进一步的把它转化为对应的对象,这常用于级联查询以及缓存功能。
我们先用一个简单的例子来了解一下 resultMap 的使用。
场景
实体类中的某个属性在数据库中没有相应的字段,但可以通过其它字段来做业务逻辑获取到。
实体类文件:
User.java
package com.lks.domain;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Created by likaisong on 2019/2/24.
*/
public class User implements Serializable {
private int id;
private String name;
private int age;
private String county;
private Date date;
private Integer birthYear;
public User(){}
//resultMap 实现新字段赋值
public User(Integer age){
this.age = age;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
this.bi