MyBatis consulta la clase de entidad y consulta otras clases a las que hace referencia la clase de entidad

Descripción del problema:

Hay dos tablas en la tabla de empleados de la base de datos y en la tabla de departamentos, correspondientes a las dos clases de entidad Empleado y Departamento. Dado que cada empleado debe tener un departamento, se debe hacer referencia al Departamento en Empleado.

Al principio pensé que MyBatis requiere que los atributos de la clase de entidad se correspondan con los campos de la tabla de la base de datos. El empleado usa la identificación del Departamento, pero esto hará que la pantalla frontal solo muestre la identificación del departamento (si la -end usa id para verificar el nombre del departamento) También se puede lograr, pero es más problemático).

Más tarde, cambié a usar el objeto Departamento directamente en Empleado, pero no sé cómo escribir SQL en EmployeeMapper.xml, y encontré la respuesta después de varias búsquedas.

Solución

Primero, consulte la información requerida en la tabla de departamento y la tabla de empleados a través de la consulta de la tabla de combinación, y luego use el alias para cambiar el nombre de campo que se encuentra en la tabla de departamento por el nombre de atributo de la clase de Departamento.

 

Clase de entidad

Empleado

package com.zcy.pojo;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@NoArgsConstructor
public class Employee {
    
    
    private int id;
    private String name;
    private String email;
    private int gender;//女0,男1
    private Department department;
    private Date birthday;
}

 

Departamento

package com.zcy.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
    
    
    private int id;//部门ID
    private String name;//部门名称
}

 

SQL en MyBatis

<select id="queryAllEmployee" resultType="employee">
    select
    a.id, a.name, a.email, a.gender,
    b.id "department.id",
    b.name "department.name",
    birthday
    from employee a
    inner join department b
    where a.department_id = b.id;
</select>

resultado:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_39763246/article/details/114456179
Recomendado
Clasificación