使用@mapper 不使用xml配置(自动注入)
联合查询
检索能力太差查了一晚上没能解决
具体问题:
Employee类 属性:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Employee {
private Integer id;
private String lastName;
private String email;
private Integer gender;//0 女 1 男
private Department department;
private Integer age;
}
Department类
//部门表
@Data //使用lombok (为了下面的有参无参)
@AllArgsConstructor //有参
@NoArgsConstructor //无参
@Component
public class Department {
private Integer id;
private String departmentName;
}
EmpMapper:
@Select("select * from emp where id = #{id}")
@Results({
@Result(property = "department", column="department",
one = @One(select = "com.example.dao.DepMapper.getDepartmentById"))
})
Employee getEmpAndDeptByid(@Param("id") int id);
* @Result 的使用:
* property:查询结果赋值给此实体属性(pojo实体类的名称 column是实际数据库字段 对应实例化property字段)
* column:对应数据库的表字段,做为下面@One(select方法的查询参数
* one:一对一的查询
* @One(select = 方法全路径) :调用的方法
@Mapper
@Repository //标记为dao层
public interface EmpMapper {
@Select("select * from emp where id = #{id}")
@Results({
@Result(property = "department", column="department",one = @One(select = "com.example.dao.DepMapper.getDepartmentById"))
})
Employee getEmpAndDeptByid(@Param("id") int id);
}
DepMapper:
@Mapper
@Repository //标记为dao层
public interface DepMapper {
@Select("select * from department")
List<Department> getDepartments();
@Select("select * from department where id=#{id}")
Department getDepartmentById(@Param("id") int id);
}
具体参考
本文介绍如何在SpringBoot项目中使用Mybatis进行多表联合查询,并通过注解方式实现对象与数据库表之间的映射。示例展示了Employee与Department两个实体类的定义,以及如何在Mapper接口中配置@Select与@Result来完成一对多查询。

1191

被折叠的 条评论
为什么被折叠?



