ardygithub / machinetta

0 stars 0 forks source link

sqlmap modify #5

Closed ardygithub closed 5 years ago

ardygithub commented 5 years ago
                                        SQLMapファイルの改修案                                                              

◆改修規模:SQLMAPファイル76件

① パッケージの変更
PJNAME\resource\config\sqlmap\xxxxxx ※ xxxxxxは機能ID ⇒
PJNAME-domain\src\main\resources\jp\co\kaisya\business\PJNAME\xxxxxx\repository

② SQLのxmlファイル命名を修正する
xxxDao.xml⇒xxxRepository.xml
xxxxx.xml⇒xxxxxRepository.xml

③ 【<dynamic】の切替が自動的に実現できないため、手動的に下記の修正を行ってください。(12箇所)
③-1 の場合

③-2     <dynamic prepend="WHERE ">の場合                                                                                               
    ⇒                                                                                                   
    <trim prefix=" WHERE " prefixOverrides="AND|OR">    </trim>                                                                                                 

④ SQLのXMLファイルに、先頭の宣言行を削除
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">

⑤ SQLのXMLファイルに、typeAliasの定義を削除する

⑥ SQLのXMLファイルに、文字化けのコメント内容があれば、修正OR削除する

⑦ ibatis2mybatis-master.zipを利用し、mybatis文法に変える
コマンドライン:
\ibatis2mybatis-master>ant -d >kekka.txt
kekka.txtファイルにエラーなしを確認

⑧ 変数符号の修正(#abc# ⇒#{abc}, $abc$ ⇒${abc} ) ←今回対応必要なし
①サクラで正規表現【#[a-z]】、選択始点(1)挿入で【{】を挿入する
②サクラで【{#】を【#{】に置換する
③サクラで正規表現【[a-z]#】、選択終点(2)挿入で【}】を追加する
④サクラで【#}】を【}】に置換する

⑤サクラで正規表現【$[a-z]】、選択始点(1)挿入で【{】を挿入する                                                                                                        
⑥サクラで【{$】を【${】に置換する                                                                                                     
⑦サクラで正規表現【[a-z]$】、選択終点(2)挿入で【}】を追加する                                                                                                        
⑧サクラで【$}】を【}】に置換する                                                                                                      

⑨ namespaceの内容を手動的に修正する
DBアクセスIFのフルパスを指定
例:namespace="jp.co.kaisya.business.PJNAME.portal.repository.XXXRepository"

⑩ リスト型、配列型のisNotEmpty判定があれば、下記の対応要

⑪ 下記のようなAND文があれば、対応要 修正前: AND { } 修正後: ⑫ 検索条件より複数件検出可能、仕様上1件しか返却されない場合、 修正前: Ibatisの場合 BaseDao.queryForObjectでリストの先頭1行のみを返却する 修正後: Mybatisの場合 実装クラスがなくしたので、必ず1行のみ返却されるSQLに修正する。 例: select * from A where BBB = ?? AND ROWNUM=1 select * from (select * from A where BBB = ?? ORDER BY CC) where ROWNUM=1 ⑬ ページングがある場合、現行ソースの実現方式と一緒に、BaseDAOに提供されたメソッドを利用する。 改造後BaseRepositoryにの下記のメソッドを利用する。 public List queryForList(String statementName, int skipResults, int maxResults)