<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Exposed アーカイブ - Sheltie Garage Tech</title>
	<atom:link href="https://sheltie-garage.xyz/tech/category/kotlin/exposed/feed/" rel="self" type="application/rss+xml" />
	<link>https://sheltie-garage.xyz/tech/category/kotlin/exposed/</link>
	<description>テクノロジー関連の話題をまとめたブログです</description>
	<lastBuildDate>Sun, 10 Jul 2022 12:58:14 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>ktor + ExposedでCRUDしてみる</title>
		<link>https://sheltie-garage.xyz/tech/2022/07/ktor-exposed%e3%81%a7crud%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://sheltie-garage.xyz/tech/2022/07/ktor-exposed%e3%81%a7crud%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[monodon]]></dc:creator>
		<pubDate>Sun, 10 Jul 2022 12:58:10 +0000</pubDate>
				<category><![CDATA[Exposed]]></category>
		<category><![CDATA[kotlin]]></category>
		<category><![CDATA[Ktor]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/tech/?p=158</guid>

					<description><![CDATA[<p>先日なんとなくktorが使えるようになったので、今度はDB操作の基本であるCRUDを組んでみようと思います O/Rマッパーをどうするか 今回O/Rマッパーとして「Exposed」を利用してみることにしました。Expose [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2022/07/ktor-exposed%e3%81%a7crud%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">ktor + ExposedでCRUDしてみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p>先日なんとなくktorが使えるようになったので、今度はDB操作の基本であるCRUDを組んでみようと思います</p>



<h2 class="wp-block-heading">O/Rマッパーをどうするか</h2>



<p>今回O/Rマッパーとして「<a href="https://github.com/JetBrains/Exposed" target="_blank" rel="noreferrer noopener">Exposed</a>」を利用してみることにしました。<br>Exposedはkotlinの開発元であるJetBrains謹製のO/Rマッパーですね<br>kotlin開発元が作成しているということで、相性やサポートも良さそうな印象があるので使ってみることにしました</p>



<h2 class="wp-block-heading">サンプルプログラム</h2>



<p>今回作成したプログラムは<a href="https://github.com/sheltie-fusafusa/ktor_exposed" target="_blank" rel="noreferrer noopener">GitHub</a>にあげています。</p>



<h2 class="wp-block-heading">プログラムのざっくり紹介</h2>



<p>プログラムはKtor + Exposedの構成で作成されており、以下のような仕様で動きます<br>・組み込みtomcat、8080ポートでリクエストを受け付けます<br>・CRUDの動作はPOST/GET/PUT/DELETE のそれぞれのHTTPメソッドに対応させています</p>



<h2 class="wp-block-heading">POSTMANを利用した動作確認</h2>



<p>PostManを利用した動作は以下のようになります</p>



<h3 class="wp-block-heading">Create / POST</h3>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="554" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_001-1024x554.png" alt="" class="wp-image-159" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_001-1024x554.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_001-300x162.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_001-768x415.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_001.png 1520w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>上記を実行すると、DB内にデータが作成されました</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="556" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_002-1024x556.png" alt="" class="wp-image-160" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_002-1024x556.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_002-300x163.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_002-768x417.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_002.png 1042w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<h3 class="wp-block-heading">READ / GET</h3>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="613" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_003-1024x613.png" alt="" class="wp-image-161" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_003-1024x613.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_003-300x180.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_003-768x460.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_003.png 1510w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">UPDATE / PUT</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="557" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_004-1024x557.png" alt="" class="wp-image-162" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_004-1024x557.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_004-300x163.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_004-768x418.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_004.png 1504w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<p>アップデートを実行すると以下のようにデータが更新されました</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="434" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_005-1024x434.png" alt="" class="wp-image-163" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_005-1024x434.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_005-300x127.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_005-768x326.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_005.png 1080w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">DELETE / DELETE</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="567" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_006-1024x567.png" alt="" class="wp-image-164" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_006-1024x567.png 1024w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_006-300x166.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_006-768x425.png 768w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_006.png 1520w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>productNoをキーにDELETEを実行します</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="932" height="510" src="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_007.png" alt="" class="wp-image-165" srcset="https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_007.png 932w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_007-300x164.png 300w, https://sheltie-garage.xyz/tech/wp-content/uploads/2022/07/20220710_007-768x420.png 768w" sizes="auto, (max-width: 932px) 100vw, 932px" /></figure>



<p>データが無事に消えました</p>



<h2 class="wp-block-heading">以上</h2>



<p>簡単ですが、Ktor+Exposedを利用した簡単なCRUD操作を紹介いたしました。<br>DB周りの操作を行えるようになると、アプリ開発の幅もぐっと広がりますね。<br>DBアクセスに付いては、ずっとSQLを記述する方式で操作をしてきたので、テーブルオブジェクトに値を設定するだけでアップデートされたり削除できたりできるのはなんとなく動作が読めず複雑な気がしますが、徐々になれていきたいと思います。</p>


<div id="rinkerid166" class="yyi-rinker-contents  yyi-rinker-postid-166 yyi-rinker-img-m yyi-rinker-catid-10 yyi-rinker-catid-7 yyi-rinker-catid-9 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fkotlin%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img loading="lazy" decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4272/9784877834272.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fkotlin%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">やさしいKotlin入門 [ 野崎英一 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							<span title="" class="price">¥2,640</span>
															<span class="price_at">(2026/04/09 09:25:49時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=kotlin&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2Fkotlin%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3Dkotlin" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>


<div id="rinkerid167" class="yyi-rinker-contents  yyi-rinker-postid-167 yyi-rinker-img-m yyi-rinker-catid-10 yyi-rinker-catid-7 yyi-rinker-catid-9 ">
	<div class="yyi-rinker-box">
		<div class="yyi-rinker-image">
							<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FDocker%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow"><img loading="lazy" decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/6424/9784296106424.jpg?_ex=128x128" width="128" height="128" class="yyi-rinker-main-img" style="border: none;"></a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</div>
		<div class="yyi-rinker-info">
			<div class="yyi-rinker-title">
									<a href="https://af.moshimo.com/af/c/click?a_id=3394378&#038;p_id=54&#038;pc_id=54&#038;pl_id=616&#038;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FDocker%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow">さわって学ぶクラウドインフラ　docker基礎からのコンテナ構築 [ 大澤 文孝 ]</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">							</div>
			<div class="yyi-rinker-detail">
							<div class="credit-box">created by&nbsp;<a href="https://oyakosodate.com/rinker/" rel="nofollow noopener" target="_blank" >Rinker</a></div>
										<div class="price-box">
							<span title="" class="price">¥2,970</span>
															<span class="price_at">(2026/04/09 09:25:50時点&nbsp;楽天市場調べ-</span><span title="このサイトで掲載されている情報は当サイトの作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格がその商品の販売に適用されます。">詳細)</span>
																	</div>
						</div>
						<ul class="yyi-rinker-links">
																                    <li class="amazonlink">
						<a href="https://www.amazon.co.jp/gp/search?ie=UTF8&amp;keywords=Docker&amp;tag=monodon-22&amp;index=blended&amp;linkCode=ure&amp;creative=6339" rel="nofollow" class="yyi-rinker-link">Amazon</a>					</li>
													<li class="rakutenlink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616&amp;url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FDocker%2F%3Ff%3D1%26grp%3Dproduct" rel="nofollow" class="yyi-rinker-link">楽天市場</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3394378&amp;p_id=54&amp;pc_id=54&amp;pl_id=616" width="1" height="1" style="border:none;">					</li>
													<li class="yahoolink">
						<a href="https://af.moshimo.com/af/c/click?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502&amp;url=https%3A%2F%2Fshopping.yahoo.co.jp%2Fsearch%3Fp%3DDocker" rel="nofollow" class="yyi-rinker-link">Yahooショッピング</a><img loading="lazy" decoding="async" src="https://i.moshimo.com/af/i/impression?a_id=3442618&amp;p_id=1225&amp;pc_id=1925&amp;pl_id=18502" width="1" height="1" style="border:none;">					</li>
				                											</ul>
					</div>
	</div>
</div>
<p>投稿 <a href="https://sheltie-garage.xyz/tech/2022/07/ktor-exposed%e3%81%a7crud%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/">ktor + ExposedでCRUDしてみる</a> は <a href="https://sheltie-garage.xyz/tech">Sheltie Garage Tech</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sheltie-garage.xyz/tech/2022/07/ktor-exposed%e3%81%a7crud%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
