日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

jpa多表关联查询_Spring Boot 整合mybatis如何自定义 mapper 实现多表关联查询

發布時間:2024/7/23 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jpa多表关联查询_Spring Boot 整合mybatis如何自定义 mapper 实现多表关联查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇文章已經介紹了自定義 mapper 實現自定義的方法,其實實現了通過自定義的mapper就可以做多表關聯等復雜查詢。但是很多朋友還是反饋說沒有實現多表關聯查詢,所以,今天把文章又重新修改了,增加了多表關聯的實現步驟。

Mybatis 插件自動生成的mapper 實現了大部分基本、通用的方法,如:insert、update、delete、select 等大概20個左右方法,都是比較基礎的增刪改查,這些通用Mapper提供的方法基本都能滿足各種單表操作需求。

但是,在實際工作中通用Mapper并不能滿足所有的工作,或是某個業務需要手寫 sql 語句、或是多表關聯時,該怎么辦呢? 這就需要額外的一些自定義的mapper 實現一些特定的功能。下面就來介紹自定義mapper 的實現。

一、自定義mapper

首先需要創建一個項目并整合mybatis等相關框架,這個之前介紹過這里不再細說。直接在原來的基礎上實現。《Spring Boot如何使用Mybatis XML 配置版》

1、創建自定義 mapper

在com.weiz.mapper 包中,創建 SysUserMapperCustom 接口

package com.weiz.mapper;import com.weiz.pojo.SysUser;import java.util.List;public interface SysUserMapperCustom { List queryUserSimplyInfoById(String userId);}

SysUserMapperCustom 是一個接口,這里只定義了一個方法:queryUserSimplyInfoById 。

2、創建自定義mapper 配置文件

在resourcemapper 目錄下,創建一個自定義的SysUserMapperCustom.xml

<?xml version="1.0" encoding="UTF-8" ?> select * from sys_user where id = #{id,jdbcType=VARCHAR}

說明:

  id:對應的就是 接口名,

  resultType:返回的是結果類型,

  parameterType:參數的類型,

# : 是傳遞相關參數。

3、Service 調用

首先在UserService接口中增加queryUserByIdCustom方法,然后在對應的 UserServiceImpl 實現類中,注入SysUserMapperCustom 。最后實現queryUserByIdCustom 方法,在方法中調用前面自定義的mapper 類中方法即可。具體代碼如下:

// 1. 在UserServiceImpl 中注入SysUserMapperCustom @Autowiredprivate SysUserMapperCustom userMapperCustom;// 2. 實現接口方法,調用@Overridepublic SysUser queryUserByIdCustom(String userId) { List userList = userMapperCustom.queryUserSimplyInfoById(userId); if (userList != null && !userList.isEmpty()) { return (SysUser)userList.get(0); } return null;}

以上三步,就能輕松實現 自定義的mapper 實現自定義的方法。

二、多表關聯

上面,通過自定義的mapper 實現了自定義方法。下面說一說多表關聯如何實現。

這里用用戶(Sys_User)和公司(Sys_Company)的關聯為例。

1、數據庫表

數據庫中原先已經有Sys_User 表,增加Sys_Company 表。

CREATE TABLE `sys_company` ( `id` varchar(64) NOT NULL DEFAULT '', `name` varchar(256) DEFAULT NULL, `code` varchar(64) DEFAULT NULL, `tax_id` varchar(64) DEFAULT NULL, `address` varchar(1024) DEFAULT NULL, `tel` varchar(256) DEFAULT NULL, `email` varchar(256) DEFAULT NULL, `register_time` date DEFAULT NULL, `is_delete` bit(1) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Sys_User 表 通過company_id 和Sys_Company 表關聯。

相關測試數據大家自行創建。

2、修改 pojo 類

首先、數據庫中創建完Sys_Company 表后,可以用我們之前的mybatis插件,自動生成Company對應的mapper 、pojo 類 和 xml 配置文件。這里不再細說,大家可以看我之前的文章:《Spring Boot如何使用Mybatis XML 配置版「附詳細步驟」》。

然后、自動生成的SysUser 類,沒有對應的 Company 對象。需要手動加上。

package com.weiz.pojo;import java.util.Date;import javax.persistence.*;@Table(name = "sys_user")public class SysUser { @Id private String id; @Column(name = "company_id") private String companyId; // 省略之前的 字段 private SysCompany company; // 省略之前的 字段對應的getter setter public SysCompany getCompany() { return company; } public void setCompany(SysCompany company) { this.company = company; }}

3、自定義mapper 增加多表查詢方法。

首先、在自定義的mapper:SysUserMapperCustom 中增加 queryAllUserListCustom方法

package com.weiz.mapper;import com.weiz.pojo.SysUser;import java.util.List;public interface SysUserMapperCustom { List queryUserSimplyInfoById(String userId); List queryAllUserListCustom();}

然后、在resourcemapperSysUserMapperCustom.xml 配置文件中增加 queryAllUserListCustom 方法配。

SELECT u.id,u.username,c.id companyid, c.name companyname FROM sys_user u LEFT JOIN sys_company c on u.company_id=c.id

說明:

1、association:用于配置1對1的映射

屬性property:company對象在user對象中的屬性名

屬性javaType:company屬性的java對象 類型

屬性column:user表中的外鍵引用company表。

2、collection:用于配置1對多關系映射

property:在user里面的List的屬性名

ofType:當前account表的java類型

column:外鍵

4、Service 調用

Service中調用新增加的方法和上面的一樣,首先在UserService接口中增加queryUserByIdCustom方法,然后在對應的 UserServiceImpl 實現類中,注入SysUserMapperCustom 。最后實現queryUserByIdCustom 方法,在方法中調用前面自定義的mapper 類中方法即可。具體代碼如下:

// 1. 在UserServiceImpl 中注入SysUserMapperCustom @Autowiredprivate SysUserMapperCustom userMapperCustom;// 2. 實現接口方法,調用@Overridepublic SysUser queryAllUserListCustom() { List userList = userMapperCustom.queryAllUserListCustom(); return userList;}

以上四步,實現了自定義的mapper 中 多表關聯的復雜查詢的方法。配置比較復雜。大家按照說明,一步一步,仔細配置。應該沒有問題。

三、測試

首先在原先的MybatisController 創建對應的測試方法。

@RequestMapping("/queryUserByIdCustom")public JSONResult queryUserByIdCustom(String userId) { return JSONResult.ok(userService.queryUserByIdCustom(userId));}@RequestMapping("/queryAllUserListCustom")public JSONResult queryAllUserListCustom() { return JSONResult.ok(userService.queryAllUserListCustom());}

啟動項目,并在瀏覽器中輸入地址:
http://localhost:8080/mybatis/queryUserByIdCustom?userId=200425AYXA733M5P

最后

以上,就把Spring Boot 中mybatis 如何通過自定義mapper 實現多表關聯查詢介紹完了,實現起來比較簡單。上面的例子比較簡單,沒有做多表關聯,大家自己寫的時候,可以試試復雜的多表關聯。

這個系列課程的完整源碼,也會提供給大家。大家私信我(章為忠學架構),回復:springboot源碼 。獲取這個系列課程的完整源碼。

推薦閱讀:

Spring Boot如何整合Quartz 實現定時任務

Spring Boot入門系列(八)整合定時任務Task,一秒搞定定時任務

Spring Boot入門系列(十五)Spring Boot 開發環境熱部署的配置

Spring Boot 使用JdbcTemplate操作數據庫,配置多數據源

Maven快速入門(二)手動創建maven項目hellomaven

Maven快速入門(一)Maven介紹及環境搭建

史上最強《Java 開發手冊》泰山版,阿里出品,必屬精品

Spring Boot入門系列(十三)如何實現事務,極簡版!

總結

以上是生活随笔為你收集整理的jpa多表关联查询_Spring Boot 整合mybatis如何自定义 mapper 实现多表关联查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。