Maison  >  Article  >  Java  >  Quelles sont les méthodes de transmission de paramètres pour la requête de pagination Mybatis en Java ?

Quelles sont les méthodes de transmission de paramètres pour la requête de pagination Mybatis en Java ?

王林
王林avant
2023-05-19 10:16:19990parcourir

1. Passer les paramètres dans l'ordre

En SQL, il existe deux manières d'exprimer l'ordre des paramètres, à savoir en utilisant arg0, arg1... et en utilisant param1, param2. ... Cette méthode est moins lisible et n’est pas recommandée pour une utilisation en développement. Dans mon test, la définition des paramètres ne se limite pas au format ci-dessus, vous pouvez le définir à volonté

1. Méthode d'interface de couche de persistance

/**
     * 分页查询 -- 顺序传参
     * @param startIndex 开始索引
     * @param pageSize 每页条数
     * @return
     */
    List<User> findPage(int startIndex,int pageSize);

2 . UserMapper Nouvelles balises ajoutées au fichier de mappage .xml

<!-- 分页查询-顺序传参 -->
    <select id="findPage" resultType="com.mybatisstudy.pojo.User">
        select * from user limit #{param1},#{param2}
    </select>

Ici, j'ai découvert que je n'avais pas besoin de définir le type de paramètre #🎜🎜 #

3. Nouvelle méthode de test

// 测试分页查询方法 -- 顺序传参
    @Test
    public void testFindPage(){
        List<User> users = userMapper.findPage(0,3);
        users.forEach(System.out::println);
    }

4. #À cause du numéro de départ ici, il commence à 0 et l'identifiant des données commence à 1, alors ne soyez pas surpris

2. Passage du paramètre @param Quelles sont les méthodes de transmission de paramètres pour la requête de pagination Mybatis en Java ?

dans la méthode d'interface Le nom du paramètre est défini via @Param dans la liste des paramètres et la position du paramètre est spécifiée via le nom du paramètre défini dans l'annotation de l'instruction SQL. Les paramètres de cette méthode sont relativement intuitifs et sont recommandés.

1. Méthode d'interface de couche de persistance

/**
     * 分页查询 -- @param传参
     * @param startIndex 开始索引
     * @param pageSize 每页条数
     * @return
     */
    List<User> findPage1(@Param("startIndex")int startIndex,@Param("pageSize")int pageSize);

2. Nouvelle balise pour le fichier de cartographie UserMapper.xml
<!-- 分页查询-@param传参 -->
    <select id="findPage1" resultType="com.mybatisstudy.pojo.User">
        select * from user limit #{startIndex},#{pageSize}
    </select>

Notez que les paramètres ici doivent être cohérents avec les paramètres de l'interface de la couche de persistance, sinon une erreur sera signalée

3. Nouvelle méthode de test#🎜 🎜 #
// 测试分页查询方法 -- @param传参
    @Test
    public void testFindPage1(){
        List<User> users = userMapper.findPage1(3,3);
        users.forEach(System.out::println);
    }
4. Résultats d'exécution

3. la classe POJO. Les attributs de cette classe sont les paramètres à transmettre. Lors de la liaison des paramètres dans l'instruction SQL, utilisez le nom de l'attribut POJO comme nom du paramètre. Cette méthode est recommandée.

1. Classe POJO personnalisée

Quelles sont les méthodes de transmission de paramètres pour la requête de pagination Mybatis en Java ? Puisque nous avons besoin de deux paramètres ici, l'un est le nombre de requêtes de départ et l'autre est le nombre d'éléments par page Combien d'entrées, donc cette classe pojo n'a besoin que de deux paramètres

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;
    }
}

2 Méthode d'interface de couche de persistance
/**
     * 分页查询 -- POJO传参
     * @param PageQuery
     * @return
     */
    List<User> findPage2(PageQuery pageQuery);

3. file Ajouter une nouvelle balise

<!-- 分页查询-POJO传参 -->
    <select id="findPage2" resultType="com.mybatisstudy.pojo.User" parameterType="com.mybatisstudy.pojo.PageQuery">
        select * from user limit #{startIndex},#{pageSize}
    </select>

Il convient également de noter ici que le nom du paramètre doit être cohérent avec le nom de la variable membre de la classe POJO personnalisée, sinon une erreur sera être signalé #🎜🎜 #

4. Nouvelle méthode de test
// 测试分页查询方法 -- POJO传参
    @Test
    public void testFindPage2(){
        PageQuery pageQuery = new PageQuery(2,3);
        List<User> users = userMapper.findPage2(pageQuery);
        users.forEach(System.out::println);
    }

5. 🎜##🎜 🎜#IV. Map passant les paramètres

Si vous ne souhaitez pas personnaliser POJO, vous pouvez utiliser Map comme support pour passer les paramètres lors de la liaison des paramètres dans les instructions SQL. , utilisez la clé de la carte comme nom de paramètre Can. Cette méthode est recommandée

1. Méthode d'interface de couche de persistance

/**
     * 分页查询 -- Map传参
     * @param Map
     * @return
     */
    List<User> findPage3(Map<String,Object> params);

2. Nouvelle balise pour le fichier de cartographie UserMapper.xml
<!-- 分页查询-Map传参 -->
    <select id="findPage3" resultType="com.mybatisstudy.pojo.User" parameterType="map">
        select * from user limit #{startIndex},#{pageSize}
    </select>

Il faut également noter ici que le nombre de paramètres doit être cohérent avec le numéro de votre collection de cartes, et le nom du paramètre doit être cohérent avec le nom de la clé dans la collection de cartes, sinon un une erreur sera signalée #🎜🎜 #

Quelles sont les méthodes de transmission de paramètres pour la requête de pagination Mybatis en Java ? 3. Nouvelle méthode de test

// 测试分页查询方法 -- 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);
    }

4.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer