SQL에서 매개변수의 순서를 표현하는 방법에는 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 문. 이 방법의 매개변수는 비교적 직관적이므로 권장됩니다.
/** * 分页查询 -- @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>
여기의 매개변수는 지속성 레이어 인터페이스의 매개변수와 일치해야 합니다. 그렇지 않으면 오류가 발생합니다. 보고됨
// 测试分页查询方法 -- @param传参 @Test public void testFindPage1(){ List<User> users = userMapper.findPage1(3,3); users.forEach(System.out::println); }
사용자 정의 POJO 클래스, 이 클래스의 속성은 SQL에서 전달되는 매개변수입니다. 명령문 매개변수를 바인딩할 때 POJO 속성 이름을 매개변수 이름으로 사용하면 됩니다. 이 방법을 권장합니다.
여기에는 두 개의 매개변수가 필요하므로 하나는 쿼리의 시작 개수이고 다른 하나는 페이지당 항목 수이므로 이 pojo 클래스에는 두 개의 매개변수만 필요합니다
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 클래스의 멤버 변수 이름과 일치해야 합니다. 동일 오류가 보고됩니다
// 测试分页查询方法 -- POJO传参 @Test public void testFindPage2(){ PageQuery pageQuery = new PageQuery(2,3); List<User> users = userMapper.findPage2(pageQuery); users.forEach(System.out::println); }
POJO를 사용자 정의하지 않으려면 Map as를 사용할 수 있습니다. SQL 문에서 매개변수를 전달하는 매개변수 매개변수를 바인딩할 때 맵의 키를 매개변수 이름으로 사용합니다. 이 방법을 권장합니다
/** * 分页查询 -- Map传参 * @param Map * @return */ List<User> findPage3(Map<String,Object> params);
3. 새로운 테스트 방법
<!-- 分页查询-Map传参 --> <select id="findPage3" resultType="com.mybatisstudy.pojo.User" parameterType="map"> select * from user limit #{startIndex},#{pageSize} </select>4. 실행 결과
위 내용은 Java에서 Mybatis 페이징 쿼리에 대한 매개변수 전달 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!