使用@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);
}
具体参考