使用MybatisPlus实现多表联查

JavaBean代码

  1. Department 类
package com.refactor.demo.entities;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@TableName("department")
@ToString
@Data
@NoArgsConstructor
public class Department {

	private Integer id;
	
	private String name;

}

2.员工类

package com.refactor.demo.entities;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.Date;

import static com.baomidou.mybatisplus.annotation.IdType.ASSIGN_ID;

@TableName("emps")
@ToString
@Data
@NoArgsConstructor
public class Employee {
    @TableId(type = ASSIGN_ID)
    private Integer id;
    private String lastName;

    private String email;
    //1 male, 0 female
    private Integer gender;
    private Integer deptid;
    private Date birth;
    @TableField(exist = false)
    private Department department;
}

DAO代码

  1. EmployeeMapper
    这里就用了mybatis的方式进行查询。
    附上mybatis的注解使用说明:https://www.cnblogs.com/mkl7/p/10779981.html
package com.refactor.demo.Dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.refactor.demo.entities.Employee;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

@Repository
public interface EmployeeMapper extends BaseMapper<Employee> {
	// 关键点:用注解版的mybatis实现多对一的查询,其他多对多,一对多也是一样的方法。
	// 这里将emp中的公寓id(deptid)作为参数,然后用com.refactor.demo.Dao.DepartmentMapper.selectById方法进行查询。
	// com.refactor.demo.Dao.DepartmentMapper.selectById是mybatisplus自动定义好,很方便。
    @Results(id="empdept", value =
            @Result(column = "deptid",property = "department",
                    one=@One(select = "com.refactor.demo.Dao.DepartmentMapper.selectById"))
    )
    @Select("select * from emps where id=#{id}")
    Employee getEmployeeandDepartment(int id);

}

  1. DepartmentMapper
package com.refactor.demo.Dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.refactor.demo.entities.Department;

public interface DepartmentMapper extends BaseMapper<Department> {
}

数据表结构、测试代码以及结果
使用MybatisPlus实现多表联查_第1张图片

你可能感兴趣的:(使用MybatisPlus实现多表联查)