Dalam SQL, terdapat dua cara untuk menyatakan susunan parameter, iaitu menggunakan arg0, arg1... dan menggunakan param1, param2.... Kaedah ini kurang boleh dibaca dan tidak disyorkan untuk digunakan dalam pembangunan. Dalam ujian saya, takrifan parameter tidak terhad kepada format di atas, anda boleh mentakrifkannya sesuka hati
/** * 分页查询 -- 顺序传参 * @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>
Di sini saya mendapati anda tidak perlu mentakrifkan jenis jenis parameter
// 测试分页查询方法 -- 顺序传参 @Test public void testFindPage(){ List<User> users = userMapper.findPage(0,3); users.forEach(System.out::println); }
Memandangkan nombor permulaan di sini bermula dari 0 dan ID data bermula dari 1, jangan terkejut
Tentukan nama parameter melalui @Param dalam senarai parameter kaedah antara muka dan nyatakan kedudukan parameter melalui parameter nama yang ditakrifkan dalam anotasi dalam pernyataan Sql. Parameter kaedah ini agak intuitif dan disyorkan.
/** * 分页查询 -- @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>
Perhatikan bahawa di sini Parameter mestilah konsisten dengan parameter antara muka lapisan kegigihan, jika tidak, ralat akan dilaporkan
// 测试分页查询方法 -- @param传参 @Test public void testFindPage1(){ List<User> users = userMapper.findPage1(3,3); users.forEach(System.out::println); }
Memandangkan kita memerlukan dua parameter di sini, satu ialah bilangan permulaan pertanyaan dan satu lagi ialah bilangan entri setiap halaman, jadi ini Kelas pojo hanya memerlukan dua parameter2 kaedah antara muka lapisan Kegigihanpackage 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; } }Salin selepas log masuk
/** * 分页查询 -- 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>Salin selepas log masuk< 🎜. >
Ia juga penting untuk diperhatikan di sini bahawa nama parameter mesti konsisten dengan nama pembolehubah ahli kelas POJO tersuai, jika tidak, ralat akan dilaporkan
// 测试分页查询方法 -- POJO传参 @Test public void testFindPage2(){ PageQuery pageQuery = new PageQuery(2,3); List<User> users = userMapper.findPage2(pageQuery); users.forEach(System.out::println); }
5. Hasil berjalan4. POJO, anda boleh menggunakan Map as The carrier untuk menghantar parameter, hanya gunakan Map Key sebagai nama parameter apabila mengikat parameter dalam pernyataan SQL. Kaedah ini disyorkan untuk menggunakan
/** * 分页查询 -- Map传参 * @param Map * @return */ List<User> findPage3(Map<String,Object> params);
2. Teg baharu untuk fail pemetaan UserMapper.xml
<!-- 分页查询-Map传参 --> <select id="findPage3" resultType="com.mybatisstudy.pojo.User" parameterType="map"> select * from user limit #{startIndex},#{pageSize} </select>
3. Kaedah ujian baharu
// 测试分页查询方法 -- 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); }
Atas ialah kandungan terperinci Apakah kaedah lulus parameter untuk pertanyaan halaman Mybatis di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!