Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SpringBoot+MyBatisで例外が出たときどこを見るか
Search
syukai
March 27, 2024
Programming
0
360
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
March 27, 2024
Tweet
Share
More Decks by syukai
See All by syukai
ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
4
1.2k
ノート付き-ブランチ運用とデプロイフローを見直してリリースを楽にする
syukai
0
98
TypeScriptとテストをはじめた
syukai
0
1.1k
一歩ずつ進めるVue.js
syukai
2
420
kanjava20170326
syukai
0
630
Other Decks in Programming
See All in Programming
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
310
Windows on Ryzen and I
seosoft
0
200
Ruby x Terminal
a_matsuda
7
590
Rails Girls Tokyo 18th GMO Pepabo Sponsor Talk
yutokyokutyo
0
200
Event Storming
hschwentner
3
1.3k
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
660
手戻りゼロ? Spec Driven Developmentとは@KAG AI week
tmhirai
1
170
2026/02/04 AIキャラクター人格の実装論 口 調の模倣から、コンテキスト制御による 『思想』と『行動』の創発へ
sr2mg4
0
710
TipKitTips
ktcryomm
0
160
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.5k
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
1.8k
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
240
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
GitHub's CSS Performance
jonrohan
1032
470k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
51k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Raft: Consensus for Rubyists
vanstee
141
7.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
The SEO identity crisis: Don't let AI make you average
varn
0
400
HDC tutorial
michielstock
1
510
Transcript
4QSJOH .Z#BUJTͰ ྫ֎͕ग़ͨͱ͖Ͳ͜ΛݟΔ͔ ؔδϟό`݄ ϢΧΠ
ϢΧΠ !TZVLBJ &$αΠτ։ൃӡ༻νʔϜͷ&. +BWBΛத৺ʹஔ͖ͭͭ։ൃʹؔ͢ΔͳΜͰΔ ʢϑϩϯτΤϯυ͔ΒڑΛஔ͍͍ͯΔʣ ࣗݾհ 2
ࠓͷΰʔϧ w .Z#BUJTͷΤϥʔݟͯύχΫΒͳ͍
.Z#BUJTͱʁ IUUQTNZCBUJTPSHNZCBUJTKBJOEFYIUNM
ࡶͳઆ໌ 9.-ϑΝΠϧʹॻ͍ͨ42-Λ࣮ߦͯ͘͠ΕΔπʔϧ ʢͱ͍͏͍ํΛ͢ΔఆͰࠓ͠·͢ʣ
ͱ͍͏ཧղͩͱྫ֎ग़ͨͱ͖ʹʮ42-࣮ߦ͍͚ͨͩ͠ͳͷʹʂʯͱͳΔ ݴ͍͑Δͱ ʮ42-Λ࣮ߦ͢ΔͨΊʹඞཁͳz͋Ε͜Εzͬͯ͘ΕΔศརͳͭʯ ˠz͋Ε͜Εz͕ͲΜͳ͜ͱͳͷ͔͓ͬͯ͘͜ͱ͕େࣄ ˠ͜ͷล͕ؒҧ͑ͯͨΒ͜Μͳྫ֎͕ग़Δɺ͕Θ͔Δ ɹυΩϡϝϯτͪΐͬͱಡΈ͘͢ͳΔͣʢͨͿΜɻ͠ΒΜ͚Ͳʣ
େ·͔ͳॲཧͷྲྀΕ
ʢલఏʣࠓճఆͷڥ w +BWB w 4QSJOH#PPU w )%BUBCBTF w (SBEMF ˞ڥҎ֎ʹҧ͏͍ํɾॻ͖ํͰ͖·͕͢ɺ
ɹҰྫͱͯ͠ࢀߟʹ͍ͯͩ͘͠͞ɻ
αϯϓϧ ݺͼग़͠Օॴ demoMapper.get(); %FNP.BQQFSKBWB @Mapper public interface DemoMapper { List<Demo>
get();_ } %FNP.BQQFSYNM <select id="get"> SELECT * FROM demo </select> (JU)VCIUUQTHJUIVCDPNTZVLBJNZCBUJTFSSPSMFBSOJOHXJUITQSJOHCPPU
ͬͯ͘ΕΔ͜ͱ ʢΞϓϦىಈ࣌ʣ9.-Λϩʔυ .BQϑΝΠϧΛ୳͢ ύϥϝλ͢ɺΓͷϚοϐϯά 42-Λ४උ͢Δ QSFQBSF
42-Λ࣮ߦͯ͠%#͔Β݁ՌΛड͚औΔ ΦϒδΣΫτʹΛೖ ͦΕͧΕͷॲཧͰΤϥʔ͕ൃੜ͠͏Δ ίϯύΠϧΤϥʔʹͳΒͳ͍
9.-ϑΝΠϧΛϩʔυ w ىಈ࣌ʹ.Z#BUJT༻ʹ༻ҙͨ͠9.-ϑΝΠϧΛϩʔυ͢Δ w 9.-ΛಡΈࠐΜͰඞཁͳΫϥεͱ͔ϩʔυͯ͠Δʁ
ൃੜ͢Δྫ֎ͱz͋Δ͋Δz w PSHBQBDIFJCBUJTCVJMEFS#VJMEFS&YDFQUJPOʢىಈ࣌ʹൃੜʣ w 9.-ͷจ๏͕ؒҧ͑ͯΔ w 3FTVMU.BQͳͲʹࢦఆͨ͠Ϋϥε͕ؒҧ͑ͯΔʢଘࡏ͠ͳ͍ʣ
.BQϑΝΠϧΛ୳͢ w .BQQFSΠϯλϑΣʔεʹରԠ͢ΔYNMϑΝΠϧΛ୳͢ w σϑΥϧτͰSFTPVSDFTԼͷ.BQQFSͱಉ͡ύε w .BQQFS͕TSDNBJODPNFYBNQMFEFNP.BQQFSͳΒ SFTPVSDFNBJODPNFYBNQMFEFNP.BQQFSYNM w
.BWFO(SBEMFͰSFTPVSDFTͷରΛઃఆ͢Δ͜ͱͰNBJOԼʹஔ͍ ͯಡΈࠐ·ΕΔΑ͏ʹมߋͰ͖Δ
ൃੜ͢Δྫ֎ͱz͋Δ͋Δz w PSHBQBDIFJCBUJTCJOEJOH#JOEJOH&YDFQUJPO w ϑΝΠϧͷஔ͖ॴؒҧ͑ͯΔ w ϑΝΠϧ໊ʢେจࣈখจࣈͱؚ͔Ίʣؒҧ͑ͯΔ w 3FTPVSDFͷઃఆ͕ແ͍ɺؒҧ͑ͯΔ
ύϥϝλΛ͢ w 42-ͰόΠϯυมͱͯ͠ѻ͏Λ͢ w .BQQFSϝιουͷύϥϝλʹ!1BSBNΞϊςʔγϣϯΛ͚ͭͯύϥϝλ Λ͢ Demo getById(@Param("pk") DemoPk pk);
w 42-ଆͰ\YYY^ \YYY^ͳͲͰύϥϝλΛड͚औΔ where pk = #{pk.value}
ൃੜ͢Δྫ֎ͱz͋Δ͋Δz w PSHNZCBUJTTQSJOH.Z#BUJT4ZTUFN&YDFQUJPO w DBVTFECZPSHBQBDIFJCBUJTCJOEJOH#JOEJOH&YDFQUJPO w .BQQFSͱ9.-Ͱύϥϝλ໊͕Ұகͯ͠ͳ͍ w ύϥϝλ໊ॻ͖Ε w
!1BSBNॻ͖Ε
ൃੜ͢Δྫ֎ͱz͋Δ͋Δz w PSHNZCBUJTTQSJOH.Z#BUJT4ZTUFN&YDFQUJPO w DBVTFECZPSHBQBDIFJCBUJTSF fl FDUJPO3F fl FDUJPO&YDFQUJPO w
ϓϩύςΟ͕ͳ͍ w ϓϩύςΟ໊ؒҧ͑ͯΔʢେจࣈɾখจࣈʣ w ϓϩύςΟͷ֊Λؒҧ͑ͯΔ
݁ՌΛϚοϐϯά w %#͔Βड͚औͬͨ݁ՌΛฦ٫༻ΫϥεʹϚοϐϯά͢Δ w ͜ͷྻ͜ͷϓϩύςΟʹೖΕΔͱ͔ w SFTVMU5ZQFSFTVMU.BQͷࢦఆ w SFTVMU.BQͰྻຖͷϚοϐϯάࢦఆ
ൃੜ͢Δྫ֎ͱz͋Δ͋Δz w PSHNZCBUJTTQSJOH.Z#BUJT4ZTUFN&YDFQUJPO w DBVTFECZPSHBQBDIFJCBUJTSF fl FDUJPO3F fl FDUJPO&YDFQUJPO w
ϓϩύςΟ໊ؒҧ͑ͯΔ
ൃੜz͠ͳ͍zΤϥʔ w 4FMFDUͯ͠ͳ͍ྻ໊Λॻ͍͍ͯͯΤϥʔʹͳΒͳ͍ w ࣮ߦͯ֘͠ͷ߲ʹOVMMίϯετϥΫλͷॳظ͕ೖΔ͚ͩ w +BWBͰೖΕ༻ҙ͚ͨ͠ͲԿೖΒͳ͔ͬͨɺΈ͍ͨͳѻ͍
42-Λ४උ͢Δ w ࣮ߦͷલʹ42-ΛϓϦίϯύΠϧ࣮ͯ͠ߦ४උ͢Δ w .Z#BUJTʹݶΒ͍͍ͣͩͨ͜ͷॲཧ͕͋Δ w ࢀߟKBWBTRM1SFQBSFE4UBUFNFOU
ൃੜ͢Δྫ֎ͱz͋Δ͋Δz w จ๏Τϥʔ͜ͷλΠϛϯάͩͱࢥͬͯͨΜ͚ͩͲ ࠓճΑ͘Α֬͘ೝͨ͠Βҧ͏͔ͬͨʂ w ͜ͷλΠϛϯάͰΤϥʔى͜͢ํ๏ࢥ͍͔ͭͳ͔ͬͨͷͰ͍͖࣍·͢ʂ
42-࣮ߦͯ͠%#͔Β݁ՌΛड͚औΔ w ࣮ࡍʹ42-Λ࣮ߦ͢Δ w %BUBTPVSDFΛࢀরͯ͠%#ʹଓ w ଓࣗମ.Z#BUJTͷൣғ֎ʢ)JLBSJ$1ͱ͔ʣ w ݁ՌΛ%#͔Βड͚औΔ w
ਖ਼ৗͳͷ͔ɺҟৗͳͷ͔ w ड͚औͬͨ݁ՌΛݺͼग़͠ݩʹฦ٫Ͱ͖Δܗʹ͢Δͷ͜ͷޙͷॲཧɻ
ൃੜ͢Δྫ֎ͱz͋Δ͋Δz w %#ʹͭͳ͕Βͳ͍ɺ%#མͪͯͨɺλΠϜΞτɾɾɾ w ʢଂ)Ͱ͜ͷλΠϛϯάͰى͜͢ͷ͘͠ͳ͍ʁʣ w PSHTQSJOHGSBNFXPSLKECD#BE4RM(SBNNBS&YDFQUJPO w 42-จ๏ޡΓ w
UZQPɺ4&-&$5۟ͷΧϯϚൈ͚ɺςʔϒϧ໊ɾྻ໊ؒҧ͍ɾɾɾɾ
ΦϒδΣΫτʹΛೖ w %#͔Βड͚औͬͨ݁ՌΛ+BWBͷΦϒδΣΫτʹ֨ೲ͢Δ w ֨ೲ͢ΔͨΊͷΠϯελϯεੜ w SFTVMU.BQ͕͋ΕهࡌͷϚοϐϯάͰɺ ͳ͚Εྻ໊ʹԊͬͨϓϩύςΟʹSF fl
FDUJPOͰΛ֨ೲ
ൃੜ͢Δྫ֎ͱz͋Δ͋Δz w PSHNZCBUJTTQSJOH.Z#BUJT4ZTUFN&YDFQUJPO w $BVTFECZPSHBQBDIFJCBUJTSF fl FDUJPO3F fl FDUJPO&YDFQUJPO w
֨ೲ͢ΔΫϥεʹదͳίϯετϥΫλ͕ແ͍ w Ҿͳ͠ίϯετϥΫλ͔ɺ֨ೲ͢Δશ߲ͷҾΛ࣋ͭίϯετϥ Ϋλ͕ଥ w QSJWBUFͰେৎ w ίϯετϥΫλະఆٛͳΒσϑΥϧτͰҾͳ͕͠༻ҙ͞ΕΔ
͓·͚ɿͨ·ʹz͋Δ͋Δz w ίϯετϥΫλϓϩύςΟͪΌΜͱ͋ΔͷʹͳΜ͔͕͏·͍͜ͱ ೖΒͳ͍ͷͳΜͰʁʁʁ w ಛఆͷQSF fi Y͕͍ͭͨϝιου͕HFUUFSTFUUFSͱͯ͠ಈ͍ͯ͠·͏ w HFU
JT DBOʜ w HFU)PHF \JG IPHFOVMM SFUVSOOFX)PHF ^
ྫʣ )PHF\ 'VHBGVHBOFX'VHB )PHF \^ HFU'VHB \ JG GVHBWBMVFOVMM
SFUVSOOFX'VHB SFUVSOGVHB ^ ίϯετϥΫλʹΑΓGVHBOVMMͷ )PHFΠϯελϯε͕࡞ΒΕΔ .Z#BUJTGVHBʹೖ͢ΔͨΊ HFU'VHBͰऔΓग़ͨ͠ϓϩύςΟʹ Λೖ͠Α͏ͱ͢Δ GVHBOVMMͳͷͰ৽͍͠'VHBΠϯ ελϯε͕ฦ͞ΕΔ ̏Ͱ࡞ͬͨΠϯελϯεʹΛೖ )PHFGVHBOVMMͷ··ɾɾɾ )PHF GVHB OVMM GVHB HFU'VHB ೖ
͍͞͝ʹ w ࠓճհͨ͠Ҏ֎ʹ৭ΜͳΤϥʔ͕ൃੜ͠ಘΔ w ͲΜͳ͜ͱΛͲΜͳॱ൪Ͱ͍ͬͯΔͷ͔ΛѲ͠ͳ͕Β ʮ42-࣮ߦͰ͖ͯΔ͔Β͜ͷล͕ؒҧ͑ͯͦ͏ʯ ʮ42-ͷ࣮ߦ͢Βͯ͠ͳ͍͔Β͜͜Βล͔ΒௐΑ͏ʯ
ͱ͔མͪண͍ͯߟ͑ΒΕΔΑ͏ʹͳΔͱخ͍͠Ͱ͢ʂ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ