Maison  >  Questions et réponses  >  le corps du texte

java - 有关mybatis里面对同一张表的操作的疑惑

比如:
查询会员列表的话,where后面带很多个if test条件是不是会影响效率,还是重写个sql,但是如果每个条件查询都重写sql,sql又太多了,显得很乱。该怎么选择?

PHP中文网PHP中文网2741 Il y a quelques jours490

répondre à tous(4)je répondrai

  • 天蓬老师

    天蓬老师2017-04-18 10:30:32

    L'efficacité ne sera pas beaucoup affectée. Après tout, ce sont toutes des opérations de mémoire. Le plus gros problème avec Mybatis dynamique SQL est que s'il y a trop de IF...TEST, la maintenance ultérieure sera très fatigante, comme il y a de nombreux appelants pour un SQL , il sera très difficile de trouver une combinaison, et le réglage SQL sera très difficile, alors essayez d'en écrire un pour chaque requête (sauf la pagination si vous en avez vraiment besoin IF...TEST). , il est recommandé de ne pas en avoir trop

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 10:30:32

    Il ne serait pas trop lent d'écrire un jugement if d'une manière définie, mais si cela ne fonctionne pas, utilisez une vue

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:30:32

    Il doit y avoir un cache, ce qui ne devrait pas trop affecter l'efficacité.
    De plus, s'il y a N conditions, alors il y a 2^N combinaisons de conditions correspondantes. Combien de SQL différents devez-vous écrire ?

    répondre
    0
  • 迷茫

    迷茫2017-04-18 10:30:32

    1. Il est très courant d'avoir plusieurs conditions de test if après où dans la fonction de requête, et il est également courant d'avoir plus de dix ou vingt conditions de requête
    2 Puisque MyBatis fournit la fonction de balise de test if ; , il doit y en avoir. Il a été optimisé, et c'est certainement beaucoup plus efficace que d'écrire plusieurs SQL puis de juger et de contourner le code Java
    3. Le plus grand impact sur la vitesse d'exécution est la configuration matérielle du serveur de base de données et du serveur de base de données. plate-forme de base de données. En tant que programmeur ordinaire, vous n'avez pas besoin de trop réfléchir. Si vous êtes vraiment préoccupé par ce problème, vous pouvez également mettre votre propre code dans l'environnement de test pour les tests de stress. dans les conditions de requête, les modifications dans les colonnes de résultats de la requête affectent davantage l'efficacité car elles doivent être fermées manuellement. Mise en cache remapResults
    .

    <select id="verificationCode_select" parameterClass="String" resultClass="HashMap" remapResults="true">$sql$</select>
    

    Pour résumer, que cela fonctionne ou non, écrivons le code et le SQL et testons-le d'abord !

    répondre
    0
  • Annulerrépondre