SQL では、パラメータの順序を表現する方法が 2 つあり、arg0、arg1... を使用する方法と param1、param2... を使用する方法です。このメソッドは可読性が低いため、開発での使用はお勧めできません。今回のテストでは、パラメータの定義は上記の形式に限定されず任意に定義できます
/** * 分页查询 -- 顺序传参 * @param startIndex 开始索引 * @param pageSize 每页条数 * @return */ List<User> findPage(int startIndex,int pageSize);
<!-- 分页查询-顺序传参 --> <select id="findPage" resultType="com.mybatisstudy.pojo.User"> select * from user limit #{param1},#{param2} </select>
ここで、型を定義せずにパラメータの型を定義できることがわかりました
// 测试分页查询方法 -- 顺序传参 @Test public void testFindPage(){ List<User> users = userMapper.findPage(0,3); users.forEach(System.out::println); }
ここでの開始番号は0から始まり、データIDは1から始まりますので、気にしないでください。びっくり
# インターフェースメソッドのパラメータリストに@Paramでパラメータ名を定義し、パラメータ名でパラメータの位置を指定します。 SQL ステートメントのアノテーションで定義されます。このメソッドのパラメーターは比較的直感的であるため、お勧めします。1. 永続層インターフェイス メソッド
/** * 分页查询 -- @param传参 * @param startIndex 开始索引 * @param pageSize 每页条数 * @return */ List<User> findPage1(@Param("startIndex")int startIndex,@Param("pageSize")int pageSize);
<!-- 分页查询-@param传参 --> <select id="findPage1" resultType="com.mybatisstudy.pojo.User"> select * from user limit #{startIndex},#{pageSize} </select>
#ここで注意してください。永続層インターフェイスのパラメータと一致している必要があります。そうでない場合は、エラーが報告されます。
# 3. 新しいテスト方法
// 测试分页查询方法 -- @param传参 @Test public void testFindPage1(){ List<User> users = userMapper.findPage1(3,3); users.forEach(System.out::println); }
3. カスタム POJO クラスのパラメータの受け渡し
カスタム POJO クラス、このクラスの属性は、SQL ステートメントでパラメータをバインドするときに渡されるパラメータです。 POJO プロパティ名をパラメーター名として使用します。この方法をお勧めします。1. カスタム POJO クラスここでは 2 つのパラメータが必要です。1 つはクエリの開始数で、もう 1 つはページあたりのエントリ数です。 this pojo クラスに必要なパラメータは 2 つだけです
2. 永続層インターフェイス メソッドpackage com.mybatisstudy.pojo; public class PageQuery { private int startIndex; private int pageSize; public PageQuery(int i, int i1) { this.startIndex = i; this.pageSize = i1; } public int getStartIndex() { return startIndex; } public void setStartIndex(int startIndex) { this.startIndex = startIndex; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } }ログイン後にコピー
/** * 分页查询 -- POJO传参 * @param PageQuery * @return */ List<User> findPage2(PageQuery pageQuery);
<!-- 分页查询-POJO传参 --> <select id="findPage2" resultType="com.mybatisstudy.pojo.User" parameterType="com.mybatisstudy.pojo.PageQuery"> select * from user limit #{startIndex},#{pageSize} </select>
ここで、パラメーター名がカスタム POJO クラスのメンバー変数名と一致している必要があることに注意することも重要です。一貫性がない場合、エラーが報告されます。4. 追加新しいテストメソッド
// 测试分页查询方法 -- POJO传参 @Test public void testFindPage2(){ PageQuery pageQuery = new PageQuery(2,3); List<User> users = userMapper.findPage2(pageQuery); users.forEach(System.out::println); }
4. マップパラメータの受け渡し
望まない場合POJO をカスタマイズするには、パラメータを渡すためのキャリアとして Map を使用できます。SQL ステートメントでパラメータをバインドするときに、パラメータ名として Map Key を使用するだけです。この方法が推奨されます1. 永続層インターフェイス メソッド
/** * 分页查询 -- Map传参 * @param Map * @return */ List<User> findPage3(Map<String,Object> params);
<!-- 分页查询-Map传参 --> <select id="findPage3" resultType="com.mybatisstudy.pojo.User" parameterType="map"> select * from user limit #{startIndex},#{pageSize} </select>
こちらパラメータの数はマップ コレクションの数と一致する必要があり、パラメータ名はマップ コレクション内のキーの名前と一致する必要があることに注意することも重要です。一致しない場合はエラーが報告されます#3. 新しいテスト方法
// 测试分页查询方法 -- Map传参 @Test public void testFindPage3(){ Map<String,Object> params = new HashMap<>(); params.put("startIndex",0); params.put("pageSize",4); List<User> users = userMapper.findPage3(params); users.forEach(System.out::println); }
以上がJava での Mybatis ページング クエリのパラメータ受け渡しメソッドは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。