mybatisあいまい検索の実現方法


mybatisあいまい検索の実現方法
mybatisの逆方向アシスタントは確かに使いやすいです。多くの従来のsql文を作成する時間を省きますが、自動的にあいまいな検索文を生成することはできません。しかし、開発にはボケ検索が必要です。だから、手動でMapperに対してあいまいな検索機能を作成する必要があります。
ここでまずMyBatis/Ibatisの中の嚖和$の違いを明確にします。
1.xiは入ってきたデータをすべて文字列として扱い、自動的に入ってきたデータにダブルクォーテーションマークを付けます。order by〓〓〓〓〓〓〓〓〓〓ID菗菗、もし入ってきた値が111なら、sqlに解析された値はorder by「111」であり、もし入ってきた値がidであれば、解析されたsqlはorder by「id」である。
2.$は、入ってきたデータを直接にsqlに表示します。order by$user_IDドルは、もし入ってきた値が111なら、sqlに解析された時の値はorder by user_となります。IDは、着信値がidであれば、解析されたsqlはorder by idである。
3.铉方式はsql注入を大きく防ぐことができます。
4.$方式はSql注入を防ぐことができません。
5.$方式は、典型的には、データベースオブジェクト、例えば、着信テーブル名のようなものに使用される。
6.一般的に、菗が使えるものは使わないでください。
ps:mybatisを使っていますが、まだ会っています。CDATA[]>の使い方は、記号内の文は文字列として扱われず、sql文として直接に使用されます。例えば、格納プロセスを実行します。
私達の需要はUserに対してあいまいな検索をするので、構想はすべての基本的なフィールド(username、genderなど)に対してすべて入ってくるkey(キーワード)と比較するのです。
1、UserMapper.xmlコード

 <select id="queryUserByKey" parameterType="string"
    resultType="com.lqr.pojo.User">
    select * from user where uid like CONCAT('%',#{key},'%')
    or username like CONCAT('%',#{key},'%')
    or realname like CONCAT('%',#{key},'%')
    or identification like CONCAT('%',#{key},'%')
    or email like CONCAT('%',#{key},'%')
  </select>
2、UserMapper.javaコード

List<User> queryUserByKey(String key);
以上は本人が開発中に出会った場面です。今後は他のmybatisのあいまいな検索があります。
疑問があれば、メッセージをお願いします。あるいは、当駅のコミュニティで交流して討論してください。ありがとうございます。