記事ディレクトリ
序文
過去2日間で、mybatisデータベースの操作でいくつかの問題が発生しました。実は、データベースの知識が少し弱いことが主な理由です。それは私の食べ物なので、ブログを書いてメモを取ります。将来遭遇しても混乱することはありません。
1つは、MyBatisが文字列をトラバースすることです。
myBatisトラバーサルと言えば、mybatisが配列またはリンクされたリストをトラバースすることだけを考えているので、私のフィールドは「1、2、3」などの文字列です。したがって、最初に考えるのは、マッパーインターフェイスを呼び出すときに、文字列が次のように変換されることです。 mybatisに渡された配列は、実際、通常の状況では問題ありませんが、データベース設定が多すぎます。文字列を配列に呼び出す前に、メソッドマッピングを介してMyBatisトラバーサルメソッドを呼び出し、データの不一致エラーを報告しました。これを防ぐことは不可能です。トラバースの方法が間違っているといつも思っていました
が、ストリングをトラバースする方法は次のとおりです。学んだけどこんな風に使える
select * from t_toWho where id in
<foreach collection="strs.split(',')" item="item" index="index" open="(" close=")" separator=",">
CONVERT(#{item},SIGNED)
</foreach>
2.MyBatisで特別な記号を使用する
Mybatisでの以前の判断は次のとおりです。
<if test="A!=null and A!=“”"> </if>
それで今日私は突然サイズを比較しようとしましたそしてエラーを見つけました
要素タイプ「if」に関連付けられた「test」属性値に「<」文字を含めることはできません
わざと波を学びに行った
gtは>に
対応gteは> =に
対応ltは<に対応
lteは<=に
対応eqは==に
対応neqは!=に対応
ファジークエリを実装したいので、文字列のスプライシングについても少し遭遇しました。理由は上記と同じであるため、多くのマッピングがあります。そうでない場合、マッパーインターフェイスを呼び出すときに直接スプライシングする場合
はそれほど多くありません。直接言うことはあまりありません。コードをアップロード
and toWhoId like CONCAT(CONCAT('%', #{toWhoId}), '%')
実際、いろいろな方法がありますが、上記の方法は直感的で良いと思います。もっと良い方法があれば、コメントで指摘してください。
Sqlデータタイプの変換
intからvarchar
123+ ''
CAST(123 AS CHAR);
varchariからint
CONVERT(#{item}、SIGNED)
CONVERT( '67'、SIGNED);
総括する
各ピットに良いメモをとってください、そうすればそれはどんどん良くなっていきます。