<?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>Java アーカイブ - Sheltie&#039;s Garage</title>
	<atom:link href="https://sheltie-garage.xyz/category/%e6%8a%80%e8%a1%93%e7%b3%bb/java/feed/" rel="self" type="application/rss+xml" />
	<link>https://sheltie-garage.xyz/category/技術系/java/</link>
	<description>趣味に生きる</description>
	<lastBuildDate>Sun, 25 Apr 2021 13:23:39 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://sheltie-garage.xyz/wp-content/uploads/2018/04/cropped-L927xrpq-32x32.jpg</url>
	<title>Java アーカイブ - Sheltie&#039;s Garage</title>
	<link>https://sheltie-garage.xyz/category/技術系/java/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MyBatis3 シングルクオート内のパラメータを置き換えるには？</title>
		<link>https://sheltie-garage.xyz/2021/04/mybatis3-%e3%82%b7%e3%83%b3%e3%82%b0%e3%83%ab%e3%82%af%e3%82%aa%e3%83%bc%e3%83%88%e5%86%85%e3%81%ae%e3%83%91%e3%83%a9%e3%83%a1%e3%83%bc%e3%82%bf%e3%82%92%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88%e3%82%8b/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Sun, 25 Apr 2021 13:22:27 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=2661</guid>

					<description><![CDATA[<p>先に結論から 上記は位置情報をMySQL8のカラムに挿入するSQLの一部分ですが、調べた限り＄パラメータを利用して置き換えてやる必要がありそうです。（＃パラメータだとエラーで実行できず） ことの発端 Solrの位置情報検 [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2021/04/mybatis3-%e3%82%b7%e3%83%b3%e3%82%b0%e3%83%ab%e3%82%af%e3%82%aa%e3%83%bc%e3%83%88%e5%86%85%e3%81%ae%e3%83%91%e3%83%a9%e3%83%a1%e3%83%bc%e3%82%bf%e3%82%92%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88%e3%82%8b/">MyBatis3 シングルクオート内のパラメータを置き換えるには？</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">先に結論から</h2>



<pre class="crayon-plain-tag">ST_GeomFromText('POINT(${longitude} ${latitude})')</pre>



<p>上記は位置情報をMySQL8のカラムに挿入するSQLの一部分ですが、調べた限り＄パラメータを利用して置き換えてやる必要がありそうです。（＃パラメータだとエラーで実行できず）</p>



<h2 class="wp-block-heading">ことの発端</h2>



<p>Solrの位置情報検索を利用してなにか作れないかなと相変わらず試行錯誤しています。<br>（Solrの元データとなる）MySQLに位置データを挿入する際、以下のようなSQLでデータを投入するようです（独自調査による）</p>



<pre class="crayon-plain-tag">ST_GeomFromText('POINT(${longitude} ${latitude})')</pre>



<p>ST_GeomFromText関数に文字列でPOINTを渡すというのが、なんだか違和感アリアリですが、こうやって値を渡すようです。<br>それでPOINT部分をシングルクオートで囲って文字列をして関数に渡すわけですが、文字列内のパラメータ置き換えがうまく行かず、しばらくハマっていました。<br><br>以下が失敗例</p>



<pre class="crayon-plain-tag">ST_GeomFromText('POINT(#{longitude} #{latitude})')</pre>



<p>と＃パラメータを利用したところうまく行かずSQL実行時に以下のようなエラーが発生しました</p>



<p><em>java.sql.SQLException: Parameter index out of range (5 &gt; number of parameters, which is 4).</em></p>



<p>＃の代わりに＄を使用することでSQLを実行することができました。</p>



<h3 class="wp-block-heading">#と$の違いについて</h3>



<p>#パラメータ：PrepairedStatementの?に相当<br>$パラメータ：パラメータをそのまま出力<br>参考：<br><a rel="noreferrer noopener" href="https://mybatis.org/mybatis-3/ja/sqlmap-xml.html" target="_blank">https://mybatis.org/mybatis-3/ja/sqlmap-xml.html</a></p>



<p>通常は#でパラメータを置き換えることが多いと思います。<br>$はテーブル名の置き換えなど、特別な場合に利用することが多いです。</p>



<p>$は入力値をそのまま出力するため、<strong><span class="has-inline-color has-vivid-red-color">SQLインジェクション</span></strong>を引き起こす可能性があるため、取り扱いに注意して使用する必要があります。（ユーザーが入力した値を表示するときには使用しない　など）</p>



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



<p>ということで、MyBatisを使用して、シングルクォート内のパラメータを置き換えるときは$パラメータを使用する。というお話でした。<br>ただ、$パラメータは記載したとおりSQLインジェクションを引き起こす可能性があるので、どうにもイマイチな感じが否めません。<br>このあたりはもう少し調査してみる予定です。</p>



<a href="https://www.amazon.co.jp/Java%E3%81%AB%E3%82%88%E3%82%8B%E9%AB%98%E9%80%9FWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AESpring-Boot%E5%85%A5%E9%96%80-WINGS%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88-%E5%B0%8F%E6%9E%97-%E6%98%8C%E5%BC%98-ebook/dp/B089D599NQ?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&amp;dchild=1&amp;keywords=spring+boot&amp;qid=1619356605&amp;sr=8-3&amp;linkCode=li2&amp;tag=monodon-22&amp;linkId=9b7689987ce9f935d66fdc272a489194&amp;language=ja_JP&amp;ref_=as_li_ss_il" target="_blank" rel="noopener"><img decoding="async" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;ASIN=B089D599NQ&amp;Format=_SL160_&amp;ID=AsinImage&amp;MarketPlace=JP&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=monodon-22&amp;language=ja_JP" border="0"></a><img decoding="async" src="https://ir-jp.amazon-adsystem.com/e/ir?t=monodon-22&amp;language=ja_JP&amp;l=li2&amp;o=9&amp;a=B089D599NQ" alt="" style="border:none !important; margin:0px !important;" width="1" height="1" border="0">
<a href="https://www.amazon.co.jp/MySQL%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80-%E7%AC%AC4%E7%89%88-MySQL-8-0%E5%AF%BE%E5%BF%9C-yoku0825/dp/4798161489?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&#038;dchild=1&#038;keywords=MySQL&#038;qid=1619356648&#038;sr=8-2&#038;linkCode=li2&#038;tag=monodon-22&#038;linkId=fd6a39c034618d4b0611c334ba9abe16&#038;language=ja_JP&#038;ref_=as_li_ss_il" target="_blank" rel="noopener"><img decoding="async" border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&#038;ASIN=4798161489&#038;Format=_SL160_&#038;ID=AsinImage&#038;MarketPlace=JP&#038;ServiceVersion=20070822&#038;WS=1&#038;tag=monodon-22&#038;language=ja_JP" ></a><img decoding="async" src="https://ir-jp.amazon-adsystem.com/e/ir?t=monodon-22&#038;language=ja_JP&#038;l=li2&#038;o=9&#038;a=4798161489" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<p>投稿 <a href="https://sheltie-garage.xyz/2021/04/mybatis3-%e3%82%b7%e3%83%b3%e3%82%b0%e3%83%ab%e3%82%af%e3%82%aa%e3%83%bc%e3%83%88%e5%86%85%e3%81%ae%e3%83%91%e3%83%a9%e3%83%a1%e3%83%bc%e3%82%bf%e3%82%92%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88%e3%82%8b/">MyBatis3 シングルクオート内のパラメータを置き換えるには？</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SpringBootで複数データソースを設定する</title>
		<link>https://sheltie-garage.xyz/2021/02/springboot%e3%81%a7%e8%a4%87%e6%95%b0%e3%83%87%e3%83%bc%e3%82%bf%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/</link>
		
		<dc:creator><![CDATA[sheltie]]></dc:creator>
		<pubDate>Sun, 21 Feb 2021 08:08:33 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[技術系]]></category>
		<guid isPermaLink="false">https://sheltie-garage.xyz/?p=2489</guid>

					<description><![CDATA[<p>今更ながらSpringBootの勉強を始めてみました。まずは複数データベースへの接続設定にハマったので、忘れる前にブログにメモです SpringBootで単一のデータソースを使用する場合は、おおよその設定が自動化されてい [&#8230;]</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2021/02/springboot%e3%81%a7%e8%a4%87%e6%95%b0%e3%83%87%e3%83%bc%e3%82%bf%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/">SpringBootで複数データソースを設定する</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<p>今更ながらSpringBootの勉強を始めてみました。<br>まずは複数データベースへの接続設定にハマったので、忘れる前にブログにメモです</p>



<p>SpringBootで単一のデータソースを使用する場合は、おおよその設定が自動化されているのですぐ利用することができます。が、複数データソースを利用する場合は色々と設定を追加しなければならず、若干めんどくさい。<br>いろいろなサイトからサンプルを引っ張ってきて動くようにはなったので、設定例を紹介します。</p>



<p>プロジェクト全体像はGitHubからどうぞ<br><a href="https://github.com/sheltie-fusafusa/SpringBootMultiSourceSample" target="_blank" rel="noreferrer noopener">https://github.com/sheltie-fusafusa/SpringBootMultiSourceSample</a></p>



<h2 class="wp-block-heading">プロジェクトの構成</h2>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="379" height="728" src="https://sheltie-garage.xyz/wp-content/uploads/2021/02/7305846d887f4b5ac282bacb9a96a935.png" alt="" class="wp-image-2490" srcset="https://sheltie-garage.xyz/wp-content/uploads/2021/02/7305846d887f4b5ac282bacb9a96a935.png 379w, https://sheltie-garage.xyz/wp-content/uploads/2021/02/7305846d887f4b5ac282bacb9a96a935-156x300.png 156w" sizes="(max-width: 379px) 100vw, 379px" /></figure>



<h3 class="wp-block-heading">Configパッケージ</h3>



<p>利用するデータソースの設定が書かれているファイル。アノテーションを利用してコンフィグを行っています。<br>「このマッパーには、このデータソースを利用する」というような情報を管理しています。</p>



<h3 class="wp-block-heading">Controllerパッケージ</h3>



<p>クライアントからのリクエストを処理するためのコントローラ。<br>今回はREST　APIとして作成しています。</p>



<h3 class="wp-block-heading">DTOパッケージ</h3>



<p>Data Transfor Objectの略。データベースとJavaプログラム間のデータのやり取りを行うためのパッケージ。</p>



<h3 class="wp-block-heading">Repositoryパッケージ</h3>



<p>データベースに対して実際に行う操作が定義されているパッケージ。MyBatisのXMLと関連付けされているので、ここで定義したメソッドを呼び出すと、MyBatisで定義したSQLが呼び出されます</p>



<h3 class="wp-block-heading">Resources配下のXMLファイル</h3>



<p>MyBatisのXMLファイル郡。この中に実際のSQLが記載されている。</p>



<h2 class="wp-block-heading">設定でハマった点</h2>



<p>フォルダ設定やアノテーションの指定忘れで結構起動させられるまでにハマりました。<br>エラーが出て起動できない場合、エラーメッセージを確認し、フォルダ構成やアノテーションに間違いがないか確認するのが良さそうです。</p>



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



<p>自分もまだまだ勉強中で、解説できる内容があまりありません・・・<br>実際にGitHubにアップしたソースの中身を見えていただければ、おおよその動作は把握できるのではないかと思います。</p>



<p>ネットでサンプルを探してみると、なかなか自分にあったサンプルが見つからなかったり、解説が部分的でソースファイル全体が見えなかったりと意外と設定に苦労しました</p>



<p>ひとまず動くものはできたので、これをベースにすれば、データベースの接続先が増えても対応できそうです。</p>
<p>投稿 <a href="https://sheltie-garage.xyz/2021/02/springboot%e3%81%a7%e8%a4%87%e6%95%b0%e3%83%87%e3%83%bc%e3%82%bf%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/">SpringBootで複数データソースを設定する</a> は <a href="https://sheltie-garage.xyz">Sheltie&#039;s Garage</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
