Comment faire de la Pagination avec mybatis?
Je suis actuellement en train de travailler sur une application de commerce électronique où j'ai à vous montrer une liste des produits disponibles à l'aide de la fonctionnalité de recherche.
Comme à chaque recherche, je mettre en place de la Pagination ici.
Je suis à l'aide de mybatis que mon outil ORM et mysql comme base de données.
Recherche sur google, j'ai trouvé des façons suivantes pour accomplir cette tâche :
-
Côté Client pagination
: Ici, je vais récupérer tous les résultats de la base de données correspondant aux critères de recherche d'un seul coup et de gérer la pagination à mon niveau du code (Éventuellement fronde fin du code ). -
Côté Serveur Pagination :
Avec mysql, je peux utiliser la Limite et le décalage de la resultset pour construire une requête comme :
SELECT * FROM sampletable WHERE condition1>1 AND condition2>2 LIMIT 0,20
Ici, je dois passer le décalage et la limite de compter à chaque fois que l'utilisateur sélectionne une nouvelle page lors de la navigation dans les résultats de recherche.
Peut-on dire,
- qui sera la meilleure façon de mettre en œuvre la pagination ?
- Ne mybatis prend en charge une meilleure façon de mettre en œuvre la pagination que de s'en remettre simplement au-dessus de requêtes SQL ( comme hibernate critères Api).
Des entrées est fortement appréciés.
Merci .
Vous devez vous connecter pour publier un commentaire.
Je me utiliser votre deuxième opion avec LIMITE de requête sql.
Mais il y a la gamme des méthodes qui prennent en charge la pagination à l'aide RowBounds classe.
C'est bien décrite dans mybatis documentation ici
Attention à corriger type de jeu de résultats à utiliser.
Si vous utilisez les Contributeurs (beaucoup plus facile qu'à l'aide de matières SqlSessions), la façon la plus simple d'appliquer une limite est par l'ajout d'un RowBounds paramètre à la fonction de mappage de la liste d'arguments, e.g:
Ce qui est mentionné, presque comme une réflexion après coup dans le lien Volodymyr posté, sous le à l'Aide des Contributeurs de la rubrique, et pourrait utiliser un peu plus l'accent:
Notez que le support RowBounds peut varier en fonction de la base de données. Le Mybatis documentation implique que Mybatis va prendre soin de l'aide de la requête appropriée. Cependant, pour Oracle au moins, ce est prise en charge par de très inefficace des appels répétés à la base de données.
pagination a deux types de logique et physique de
la valeur par défaut mybatis la pagination est logique... ainsi, lorsque vous sélectionnez une énorme base de données électronique.g 100 go de blob, le rowbound méthode sera encore très lent
la solution est d'utiliser la physique de la pagination
Si vous utilisez le Générateur de MyBatis, vous pouvez essayer de la Ligne de Limites plugin depuis le site officiel: org.mybatis.le générateur.les plugins.RowBoundsPlugin. Ce plugin va ajouter une nouvelle version de la
selectByExample
méthode qui accepte un RowBounds paramètre.