Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Cuando utilizamos MyBatis Plus para operaciones de bases de datos, a veces necesitamos obtener datos de varias tablas. Este artículo presentará cómo implementar la consulta de unión izquierda en MyBatis Plus. Tomaremos dos tablas como ejemplo, una es la tabla del jefe de departamento (system_dept_leader
), y la otra es la tabla de usuarios (system_user
) y demuestra cómo obtener información detallada del líder del departamento, incluido el apodo del usuario y el número de trabajo, mediante una combinación izquierda.
Supongamos que tenemos las siguientes dos tablas de datos:
system_dept_leader
)Nombre del campo | tipo | describir |
---|---|---|
identificaciónentificación | Largo | Clave primaria |
id del departamento | Largo | ID de departamento |
id_usuario | Largo | ID de usuario |
es_primario | Entero | Es importante |
system_user
)Nombre del campo | tipo | describir |
---|---|---|
identificaciónentificación | Largo | Clave primaria |
apodo | Cadena | Apodo |
código de trabajador | Cadena | Número de empleo |
Implementaremos la consulta de unión izquierda mediante los siguientes pasos:
Primero, necesitamos definir una clase de resultado de consulta para almacenar los resultados de la consulta.Aquí definimos unDeptLeaderDORespVO
Clase, heredada de la clase base.DeptLeaderDOBaseVO
y contiene los campos de apodo y número de trabajo del usuario.
- @Data
- @EqualsAndHashCode(callSuper = true)
- @ToString(callSuper = true)
- public class DeptLeaderDORespVO extends DeptLeaderDOBaseVO {
-
- private Long id;
-
- @NotNull(message = "Department不能为空")
- private Long deptId;
-
- @NotNull(message = "User不能为空")
- private Long userId;
-
- @NotNull(message = "Is Primary不能为空")
- private Integer isPrimary;
-
- private String nickname;
- private String workerCode;
- }
A continuación, escribimos una clase de proveedor SQL para generar consultas SQL dinámicamente.usado aquíSelectProvider
Anotaciones para especificar SQL personalizado.
- public class DeptLeaderSqlProvider {
-
- public String selectDeptLeaderWithUserDetails(Map<String, Object> params) {
- Long deptId = (Long) params.get("deptId");
- Long userId = (Long) params.get("userId");
- Integer isPrimary = (Integer) params.get("isPrimary");
-
- StringBuilder sql = new StringBuilder();
- sql.append("SELECT dl.*, su.nickname, su.worker_code AS workerCode ");
- sql.append("FROM system_dept_leader dl ");
- sql.append("LEFT JOIN system_user su ON dl.user_id = su.id ");
- sql.append("WHERE 1=1 ");
- if (deptId != null) {
- sql.append("AND dl.dept_id = #{deptId} ");
- }
- if (userId != null) {
- sql.append("AND dl.user_id = #{userId} ");
- }
- if (isPrimary != null) {
- sql.append("AND dl.is_primary = #{isPrimary} ");
- }
- sql.append("ORDER BY dl.id DESC");
- return sql.toString();
- }
- }
Finalmente, defina el método de consulta en la interfaz Mapper y use SelectProvider
La anotación especifica el proveedor de SQL.
- @Mapper
- public interface DeptLeaderMapper extends BaseMapperX<DeptLeaderDO> {
-
- @SelectProvider(type = DeptLeaderSqlProvider.class, method = "selectDeptLeaderWithUserDetails")
- List<DeptLeaderDORespVO> selectDeptLeaderWithUserDetails(@Param("deptId") Long deptId,
- @Param("userId") Long userId,
- @Param("isPrimary") Integer isPrimary);
- }
El método de consulta se llama en la capa de servicio y los resultados se devuelven al front-end o se procesan más.
- @Service
- public class DeptLeaderService {
-
- @Autowired
- private DeptLeaderMapper deptLeaderMapper;
-
- public List<DeptLeaderDORespVO> getDeptLeaders(Long deptId, Long userId, Integer isPrimary) {
- return deptLeaderMapper.selectDeptLeaderWithUserDetails(deptId, userId, isPrimary);
- }
- }
A través de los pasos anteriores, hemos implementado el método de utilizar la unión izquierda para consultar la información detallada de los líderes de departamento en MyBatis Plus. Este método puede generar dinámicamente consultas SQL basadas en las condiciones entrantes para obtener información sobre los líderes de departamento y sus usuarios asociados. Este método es muy útil cuando es necesario realizar una consulta de datos en varias tablas, lo que garantiza la flexibilidad y eficiencia de la consulta de datos.
Espero que este artículo pueda ayudarle a comprender y utilizar mejor MyBatis Plus para consultas complejas. Si tiene alguna pregunta o necesidad adicional, puede discutir y comunicarse.