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文件中的两表关系,原创不易,纯手打,希望能帮到大家,请大家帮忙点个赞,谢谢大家的鼓励