通常、開発者は要件に応じてSQL文を手動で組み立てるのが非常に面倒な作業ですが、MyBatisではSQL文を動的に組み立てる機能を提供することでこの問題を解決します。
MyBatis の動的 SQL 要素は 、一般的に使用される <if>、<choose>、<when>、<otherwise>、<trim>、<where>、<set>、<foreach> などのJ STLまたは XML テキスト プロセッサに似ています。 <bind> およびその他の要素。
myBatisDemo03 アプリケーションを作成し、 「 MyBatis と Spring の統合の詳細な説明」 の MyBatis- Spring アプリケーション の src にあるすべての JAR パッケージとすべてのJava プログラムと XML ファイルを、 myBatisDemo03 の対応する場所にコピーします。
動的 SQL は通常、条件付きで where 句の一部を含めることであるため、MyBatis で最も一般的に使用される要素は <if> 要素であり、Java の if ステートメントに似ています。myBatisDemo03 アプリケーションの <if> 要素をテストします。具体的なプロセスは次のとおりです。
1) SQLマッピング文を追加
次の SQL マッピング ステートメントを com.mybatis パッケージの UserMapper.xml ファイルに追加します。
<!--条件に基づいてユーザー情報を動的にクエリするには、if 要素を使用します--> <select id="selectUserByIf" resultType="com.po.MyUser"parameterType="com.po.MyUser"> select * from user where 1=1 <if test="uname!=null および uname!=''"> および uname like concat('%',#{uname},'%') </if > <if test="usex != null および usex !=''"> および usex=#{usex} </if > </select>
2) データ操作インターフェースメソッドの追加
次のデータ操作インターフェイス メソッドを com.dao パッケージの UserDao インターフェイスに追加します。
public List<MyUser> selectUserByIf(MyUser ユーザー);
3) データ操作インターフェースメソッドを呼び出す
com.controller パッケージの UserController クラスに次のプログラムを追加して、データ操作インターフェイスのメソッドを呼び出します。
// if 要素を使用してユーザー情報をクエリします。 MyUser ifmu=new MyUser(); ifmu.setUname ("Zhang"); ifmu.setUsex (" Female"); List<MyUser> listByif=userDao.selectUserByIf(ifmu); System .out .println ("if element ===================); for (MyUser myUser:listByif) { System.out.println(myUser); }
4) 動的SQL文のテスト
com.controller パッケージ内の TestController メイン クラスを実行して、動的 SQL ステートメントをテストします。