MyBatis一对多配置xml文件

MyBatis一对多配置xml文件

比如同时有两表 user(用户)表 和dept(部门)表, 现在我们要做的是就是查询一个部门下有多少个员工

表结构如下

java实体类

package com.hxyz.pojo;
/**
 * @author TomDoG
 * @since 2021/3/23 1:15
 */
public class User {
    //主键id
    private String id;
    //姓名
    private String xm;
    //部门ID 对应dept的id
    private String deptId;
    //性别 1男 2女
    private String sex;
    //年龄
    private String age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getXm() {
        return xm;
    }

    public void setXm(String xm) {
        this.xm = xm;
    }

    public String getDeptId() {
        return deptId;
    }

    public void setDeptId(String deptId) {
        this.deptId = deptId;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
package com.hxyz.pojo;
import java.util.List;
/**
 * @author TomDoG
 * @since 2021/3/23 1:20
 */
public class ReturnDept {
    //部门id
    private String id;
    //部门名称
    private String deptName;
    //部门人员集合
    private List<User> users;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }
}

java-mapper接口,

package com.hxyz.mapper;

import com.hxyz.pojo.ReturnDept;

import java.util.List;

/**
 * @author TomDoG
 * @since 2021/3/23 1:28
 */
public interface DeptMapper {

    List<ReturnDept> findAll(ReturnDept returnDept);
}

MyBatis 配置文件--重点在于两边之间的配置,

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.hxyz.mapper.DeptMapper">
    <resultMap id="BaseResultDeptMap" type="com.hxyz.pojo.ReturnDept">
        <id column="ID" property="id" jdbcType="VARCHAR"/>
        <result column="DEPT_NAME" property="deptName" jdbcType="VARCHAR"/>
        <!--单条部门数据下,用户的集合-->
        <!--{deptId=id} deptId:user表的部门id, id:dept表的主键-->
        <collection property="users" ofType="com.hxyz.pojo.User"
                    select="selectUserList" column="{deptId=id}" javaType="ArrayList"/>
    </resultMap>

    <resultMap id="BaseResultUserMap" type="com.hxyz.pojo.User">
        <id column="ID" property="id" jdbcType="VARCHAR"/>
        <result column="XM" property="xm" jdbcType="VARCHAR"/>
        <result column="DEPT_ID" property="deptId" jdbcType="VARCHAR"/>
        <result column="SEX" property="sex" jdbcType="VARCHAR"/>
        <result column="AGE" property="age" jdbcType="VARCHAR"/>
    </resultMap>

    <select id="selectUserList" parameterType="java.util.Map" resultMap="BaseResultUserMap">
      SELECT
        ID,XM,DEPT_ID,
        CASE SEX WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END  AS  SEX,
        AGE
       FROM user WHERE DEPT_ID =#{deptId}
    </select>

    <select id="findAll" parameterType="com.hxyz.pojo.ReturnDept" resultMap="BaseResultDeptMap">
      SELECT  * FROM DEPT WHERE 1=1
      <if test="deptName != null and deptName != '' ">
          DEPT_NAME = #{deptName}
      </if>
    </select>

</mapper>

java-seivice层,

package com.hxyz.service;

import com.hxyz.pojo.ReturnDept;

import java.util.List;

/**
 * @author TomDoG
 * @since 2021/3/23 1:52
 */
public interface IDeptService {
    List<ReturnDept> findAll(ReturnDept returnDept);
}

 

package com.hxyz.service.impl;

import com.hxyz.mapper.DeptMapper;
import com.hxyz.pojo.ReturnDept;
import com.hxyz.service.IDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author TomDoG
 * @since 2021/3/23 1:52
 */
@Service
public class DeptService implements IDeptService {
    @Autowired
    private DeptMapper deptMapper;
    @Override
    public List<ReturnDept> findAll(ReturnDept returnDept) {
        return deptMapper.findAll(returnDept);
    }
}

java-controller层

package com.hxyz.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONPObject;
import com.hxyz.pojo.ReturnDept;
import com.hxyz.service.IDeptService;
import com.hxyz.util.BaseController;
import com.hxyz.util.ResultModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @author TomDoG
 * @since 2021/3/23 1:53
 */
@Controller()
@RequestMapping("/dept/")
public class DeptController extends BaseController {

    @Autowired
    private IDeptService iDeptService;

    @RequestMapping(value = "findAll")
    @ResponseBody
    public ResultModel findAll(ReturnDept returnDept) {
        List<ReturnDept> returnDeptList = iDeptService.findAll(returnDept);
        String returnData = JSON.toJSONString(returnDeptList);
        System.out.println("这是返回的数据"+returnData);
        return returnSuccess(returnData);
    }

}

访问接口 --访问成功,会返回咱们所需要的数据

数据转换-和数据库里面的测试数据相匹配,完美。。。

最重要的还是配置xml文件中的两表关系,原创不易,纯手打,希望能帮到大家,请大家帮忙点个赞,谢谢大家的鼓励

猜你喜欢

转载自blog.csdn.net/weixin_37999518/article/details/115107561
今日推荐