Monicase 2017-10-20 02:43 采纳率: 25%
浏览 2787
已采纳

mybatis 多表查询 resultMap结果集怎么传到Controller

<resultMap type="com.tsy.springmvc.model.system.Employee" id="ClassResultMap">
    <id property="employeetID" column="employeetID"/>
        <result property="employeetName" column="employeetName"/>
        <result property="depatmentID" column="depatmentID"/>
    <association property="department" javaType="com.tsy.springmvc.model.system.Department">
         <id property="departmentID" column="departmentID"/>
         <result property="departmentName" column="departmentName"/>
    </association>
</resultMap>

<!--   简单的两个表查询  -->
<select id="selectDepartmetAndEmployee" resultMap="ClassResultMap">
    select *
    from employee, department
    where employee.departmentID = department.departmentID
</select>

Controller

@RequestMapping("/")
public ModelAndView index(ModelAndView modelAndView) {
    modelAndView.setViewName("index");
    modelAndView.addObject("employeeAndDepartment", employeeService.selectDepartmetAndEmployee());
    return modelAndView;
}

Service
public interface IEmployeeService extends IService {

List<Employee> selectALLEmployee(Employee);

//这里我就不知道如何去写

}

①我不知道如何才能获取到多表查询的结果,resultMap映射了,但是不知道怎么使用。

②是一个简单的部门和员工, 我想在页面显示所有员工(员工的部门)。

③我是不是应该建立两个mybatis 查询,都是单表查询,然后通过先查询员工,得到员工的所有属性(包括部门ID)
然后在Controller中通过循环查询部门ID,得到一个与员工对应的部门表,然后再通过Model 1 Model 2 传输对应的两个List到页面?


针对@独家de记忆,补充

@TableId(value = "employeeID", type=IdType.AUTO)
private Long employeeID; //员工ID
private String employeeName;//员工姓名
private Long departmentID; //部门ID

    -------------------------------------------------------------------更改之后
    @TableId(value = "employeeID", type=IdType.AUTO)
private Long employeeID; //员工ID
private String employeeName;//员工姓名
private Long departmentID; //部门ID
    @TableField(exist = flase)
    private Long departmentID; //部门名称
    ---------------------------------------------------------------------
    这样我就可以实现我的问题

    但是这样会不会其实很累赘?
  • 写回答

12条回答 默认 最新

  • 独家de记忆 2017-10-20 03:14
    关注
     public class Employee{
        private String A;
        private String B;
        private String C;
        private String D;
    }
    
    
    <resultMap type="com.tsy.springmvc.model.system.Employee" id="ClassResultMap">
        <result property="A" column="a"/>
        <result property="B" column="b"/>
        <result property="C" column="c"/>
        <result property="D" column="d"/>
    </resultMap>
    
    
    
    <select id="selectDepartmetAndEmployee" resultMap="ClassResultMap">
        select a,b,c,d
        from employee, department
        where employee.departmentID = department.departmentID
    </select>
    

    楼主仔细看下以上映射关系;
    1.resultMap中的property对应type com.tsy.springmvc.model.system.Employee中的字段名称
    2.resultMap中的column对应select查询中的字段名称

    你关联查询的字段最终名称是啥,就对应到每个column里面,column转换成Employee对象中的property

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条