SpringBoot主外建查詢接口

說明

本章課程依賴于user表中id主鍵猛遍,如果您沒有user表顶捷,則翻看我的博客查看springboot第一章登陸接口教程創(chuàng)建user表

mysql語句


--
-- 表的結(jié)構(gòu) `company`
--

CREATE TABLE `company` (
  `id` int(11) NOT NULL,
  `uid` int(11) NOT NULL,
  `name` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- 轉(zhuǎn)存表中的數(shù)據(jù) `company`
--

INSERT INTO `company` (`id`, `uid`, `name`) VALUES
(1, 1, '北京xxxx公司');

--
-- 轉(zhuǎn)儲(chǔ)表的索引
--

--
-- 表的索引 `company`
--
ALTER TABLE `company`
  ADD PRIMARY KEY (`id`),
  ADD KEY `uid` (`uid`);

--
-- 在導(dǎo)出的表使用AUTO_INCREMENT
--

--
-- 使用表AUTO_INCREMENT `company`
--
ALTER TABLE `company`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- 限制導(dǎo)出的表
--

--
-- 限制表 `company`
--
ALTER TABLE `company`
  ADD CONSTRAINT `company_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `user` (`id`);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

切記必須要有user表臊诊,且user表中必須有 int 型 id字段口芍,如果沒有自己創(chuàng)建或者翻看博客第一章進(jìn)行創(chuàng)建后在進(jìn)行本章學(xué)習(xí)

添加Company實(shí)體類

import lombok.Data;

@Data
public class Company {
    private int id;//主鍵自增長
    private int uid;//該公司屬于哪個(gè)用戶
    private User user;//這個(gè)數(shù)據(jù)庫中沒有杖剪,但是我們通過查詢給這個(gè)對(duì)象賦值
    private String name;//公司名稱
}

看到實(shí)體類多了一個(gè)user對(duì)象蠢笋,這個(gè)是我們通過uid查詢用戶賦值到user對(duì)象上

修改 UserMapper


    @Select("select id,user from user where id = #{id}")
    User findById(int id);

本方法只查詢id,user拨齐,不查詢pass,因?yàn)槊艽a不返回給客戶昨寞,通過id查詢提供給Company使用

添加 CompanyMapper

import org.apache.ibatis.annotations.*;
import www.td0f7.cn.springboot.springboot.entity.Company;

import java.util.List;

@Mapper
public interface CompanyMapper {

    @Select("select * from company")
    @Results({
            @Result(
                    property = "user", column = "uid",
                    one = @One(select = "www.td0f7.cn.springboot.springboot.mapper.UserMapper.findById")
            )
    })
    List<Company> findAll();
}

property代表哪個(gè)屬性接收連表查詢的結(jié)果
uid代表哪個(gè)字段用于連表查詢
one = @One代表1對(duì)1關(guān)系
@One(select = "www.td0f7.cn.springboot.springboot.mapper.UserMapper.findById")這個(gè)寫的是mapper的完整路徑.方法名

以上代表瞻惋,uid做為傳值調(diào)用UserMapper中的findById方法,返回值賦值給user對(duì)象

由于查詢表內(nèi)所有內(nèi)容编矾,返回?cái)?shù)據(jù)有可能是多行熟史,所以返回值是 List

添加BookController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import www.td0f7.cn.springboot.springboot.base.BaseResult;
import www.td0f7.cn.springboot.springboot.entity.Book;
import www.td0f7.cn.springboot.springboot.mapper.BookMapper;

import java.util.List;

@RestController
@RequestMapping("book")
public class BookController {
    @Autowired(required = false)
    private BookMapper mapper;

    @GetMapping
    public BaseResult findAll() {
        List<Book> books = mapper.findALl();
        if (books == null || books.size() == 0) return new BaseResult(500, "沒有查詢到數(shù)據(jù)!", "");

        return new BaseResult(200, "", books);
    }
}

很簡單窄俏,查詢數(shù)據(jù)如果不是null并且大于0則代表查詢成功蹂匹,否則則返回?zé)o數(shù)據(jù)錯(cuò)誤提示

接下來測試一下

在這里插入圖片描述
{
    "code": 200,
    "msg": "",
    "data": [
        {
            "id": 1,
            "uid": 0,
            "user": {
                "id": 1,
                "user": "wz",
                "pass": null
            },
            "name": "北京xxxx公司"
        }
    ]
}

可以看到多了一個(gè)user對(duì)象,pass由于我們沒有查詢所以是null凹蜈,id限寞、user已經(jīng)查詢出來了

bilibili視頻教程同步更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仰坦,隨后出現(xiàn)的幾起案子履植,更是在濱河造成了極大的恐慌,老刑警劉巖悄晃,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玫霎,死亡現(xiàn)場離奇詭異凿滤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)庶近,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門翁脆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鼻种,你說我怎么就攤上這事反番。” “怎么了叉钥?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵罢缸,是天一觀的道長。 經(jīng)常有香客問我投队,道長枫疆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任蛾洛,我火速辦了婚禮养铸,結(jié)果婚禮上雁芙,老公的妹妹穿的比我還像新娘轧膘。我一直安慰自己,他們只是感情好兔甘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布谎碍。 她就那樣靜靜地躺著,像睡著了一般洞焙。 火紅的嫁衣襯著肌膚如雪蟆淀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天澡匪,我揣著相機(jī)與錄音熔任,去河邊找鬼。 笑死唁情,一個(gè)胖子當(dāng)著我的面吹牛国裳,可吹牛的內(nèi)容都是我干的鸽凶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耳舅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起松嘶,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤昔期,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后刻恭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞧省,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鞍匾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勉抓。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖候学,靈堂內(nèi)的尸體忽然破棺而出藕筋,到底是詐尸還是另有隱情,我是刑警寧澤梳码,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布隐圾,位于F島的核電站,受9級(jí)特大地震影響掰茶,放射性物質(zhì)發(fā)生泄漏暇藏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一濒蒋、第九天 我趴在偏房一處隱蔽的房頂上張望盐碱。 院中可真熱鬧,春花似錦沪伙、人聲如沸瓮顽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暖混。三九已至,卻和暖如春翁授,著一層夾襖步出監(jiān)牢的瞬間拣播,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工收擦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贮配,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓塞赂,卻偏偏與公主長得像泪勒,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子减途,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容