亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot進(jìn)行多表查詢功能的實(shí)現(xiàn)

 更新時(shí)間:2021年09月14日 15:03:44   作者:vid。  
這篇文章主要介紹了SpringBoot進(jìn)行多表查詢功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

實(shí)體類:

Emp 類:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private int id;
    private String lastname;
    private String email;
    private int gender;
    private int did;
    private Dept dept;
    private Date birth = new Date();
}

Dept類:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dept {
    private int id;
    private String dname;
}

Mapper接口

EmpMapper:

//這個(gè)注解表示這是一個(gè)mybatis的mapper類
@Mapper
@Repository
public interface EmpMapper {
    void addEmp(Emp emp);
    void deleteEmp(int id);
    void updateEmp(Emp emp);
    Emp queryEmpById(int id);
    List<Emp> queryEmpList();
}

DeptMapper:

@Mapper
@Repository
public interface DeptMapper {
    List<Dept> queryDeptList(@Param("cid") int cid);
}

EmpMapper.xml 配置文件

<mapper namespace="com.acoffee.mapper.EmpMapper">

    <resultMap id="EmpMap" type="Emp">
        <id column="id" property="id"></id>
        <id column="lastname" property="lastname"></id>
        <id column="email" property="email"></id>
        <id column="gender" property="gender"></id>
        <association property="dept" select="com.acoffee.mapper.DeptMapper.queryDeptList" column="did"></association>
    </resultMap>

    <select id="queryEmpList" resultMap="EmpMap">
        select * from emp_dept.employees
    </select>

</mapper>

DeptMapper.xml配置文件

<mapper namespace="com.acoffee.mapper.DeptMapper">

    <select id="queryDeptList" resultType="Dept">
        select * from emp_dept.department where id = #{id};
    </select>
    
</mapper>

前端頁(yè)面(部分)

<tr th:each="emp:${emps}">
	  <td th:text="${emp.getId()}"></td>
	  <td th:text="${emp.getLastname()}"></td>
	  <td th:text="${emp.getEmail()}"></td>
	  <td th:text="${emp.getGender()==0?'女':'男'}"></td>
	  <td th:text="${emp.dept.getDname()}"></td>
	  <td th:text="${#dates.format(emp.getBirth(),'yyyy-MM-dd HH:mm:ss')}"></td>
	  <td>
	      <a class="btn btn-sm btn-primary" th:href="@{/emp/{id}/(id=${emp.getId()})}" rel="external nofollow" >編輯</a>
	      <a class="btn btn-sm btn-danger" th:href="@{/delemp/{id}/(id=${emp.getId()})}" rel="external nofollow" >刪除</a>
	  </td>
</tr>

查詢結(jié)果:

在這里插入圖片描述

上述我們采用的是分步查詢。

我們下面使用association嵌套映射

其實(shí)這里查詢會(huì)出現(xiàn)一個(gè)奇怪的事情,

在這里插入圖片描述
在這里插入圖片描述

因?yàn)槲覀儸F(xiàn)在兩個(gè)表中都有id這個(gè)字段,所以我們?cè)谟成鋾r(shí)使用<result property="id" column="id"></result>去查找部門(mén)的id時(shí)就發(fā)現(xiàn)查出來(lái)的是員工的id,就是因?yàn)閱T工的id與部門(mén)的id字段名重名了?

EmpMapper:

<mapper namespace="com.acoffee.mapper.EmpMapper">

    <resultMap id="EmpMap" type="Emp">
        <id column="id" property="id"></id>
        <id column="lastname" property="lastname"></id>
        <id column="email" property="email"></id>
        <id column="gender" property="gender"></id>
        <association property="dept" javaType="com.acoffee.pojo.Dept">
            <result property="id" column="id"></result>
            <result property="dname" column="dname"></result>
        </association>
    </resultMap>

    <select id="queryEmpList" resultMap="EmpMap">
        select emp.*,dept.* from emp_dept.employees emp,emp_dept.department dept where emp.did = dept.id
    </select>
</mapper>

上述執(zhí)行結(jié)果如下

在這里插入圖片描述

我們發(fā)現(xiàn)是員工id,我們現(xiàn)在將數(shù)據(jù)庫(kù)中部門(mén)表的id改為pid

在這里插入圖片描述

修改配置文件以及實(shí)體類

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dept {
    private int pid;
    private String dname;
}
<mapper namespace="com.acoffee.mapper.EmpMapper">

    <resultMap id="EmpMap" type="Emp">
        <id column="id" property="id"></id>
        <id column="lastname" property="lastname"></id>
        <id column="email" property="email"></id>
        <id column="gender" property="gender"></id>
        <association property="dept" javaType="com.acoffee.pojo.Dept">
            <result property="pid" column="pid"></result>
            <result property="dname" column="dname"></result>
        </association>
    </resultMap>

    <select id="queryEmpList" resultMap="EmpMap">
        select emp.*,dept.* from emp_dept.employees emp,emp_dept.department dept where emp.did = dept.pid
    </select>

</mapper>

執(zhí)行結(jié)果:

在這里插入圖片描述

我們就發(fā)現(xiàn)查詢的就是部門(mén)的id了

在這里插入圖片描述

但是針對(duì)上面這個(gè)問(wèn)題我們將部門(mén)的id字段名改為did (did在員工表中也存在) 此時(shí)我們?cè)偃ゲ樵冇职l(fā)現(xiàn)還是可以把部門(mén)id查詢出來(lái)

在這里插入圖片描述

這個(gè)問(wèn)題就離譜,難道是因?yàn)閕d是主鍵,did不是主鍵的原因?就離譜

到此這篇關(guān)于SpringBoot進(jìn)行多表查詢的文章就介紹到這了,更多相關(guān)SpringBoot多表查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論