[JAVA] Écrivez ce que vous avez pensé après avoir utilisé mybatis pendant six mois
Qu'est-ce que mybatis?
- https://github.com/mybatis/mybatis-3
C'est un type de mappeur OR pour Java et possède les fonctionnalités suivantes.
- Écrire SQL dans une annotation ou un fichier xml
- Facile à appliquer aux systèmes hérités non normalisés
- Facile à régler SQL, il est donc facile à appliquer aux systèmes où la base de données a tendance à être un goulot d'étranglement des performances
Cela fait six mois que je l'ai utilisé dans le projet dont je suis en charge, je vais donc noter les bons points et les problèmes.
bon point
La classe utilisée pour l'accès SQL est réduite
Pour JDBC
- En guise de promesse, utilisez les classes suivantes
- DataSource
- Connection
- PreparedStatement
- ResultSet
- Vous devez vous souvenir de fermer Coneection, PreparedStatement et ResultSet une fois le processus d'émission SQL terminé.
Pour mybatis
- Les deux bibliothèques suivantes sont utilisées pour l'accès SQL
- SqlSessionFactory
- SqlSession
- Seule SqlSession peut être fermée
- Bien sûr, getValue () depuis ResultSet et défini sur l'objet, n'est pas nécessaire
Peut écrire du SQL en XML
Lors de l'assemblage de SQL en Java
StringBuffer sql = new StringBuffer();
sql.append("select * from table ");
sql.append("where id=? ");
sql.toString();
- Avec cela, parfois je veux extraire uniquement SQL et l'exécuter à partir de Workbench ou de pgAdmin, ce qui est très ennuyeux.
Pour Mybatis Mapper XML
<select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>
- Puisqu'il peut être écrit comme le contenu de l'élément de balise XML, il est beaucoup plus facile de le découper uniquement ici et de l'exécuter pendant un certain temps.
SQL est complètement séparé de la logique (fichier Java)
- Par conséquent, il est facile de compter le nombre d'étapes SQL et logiques séparément.
- Dans notre produit, SQL comporte autant d'étapes que de logique! Système fantôme DB! Vous pouvez faire du masochisme
Mauvais point
Puisqu'il s'agit de XML, la fonction de refactoring d'Eclipse ne peut pas être utilisée.
- Lorsque vous voulez changer le nom de la classe du modèle, vous devez grep la source ... et faire quelque chose comme un langage de script.
Puisqu'il s'agit de XML, la couverture ne peut pas être obtenue
- Dans notre projet, nous utilisons Jacoco pour mesurer la couverture, mais bien sûr, nous ne pouvons pas mesurer la couverture dans les fichiers XML Mapper.
- En XML, vous pouvez écrire une instruction if qui ajoute une clause where uniquement lorsqu'une valeur est spécifiée, mais je ne sais pas si elle couvre tout cela.
Résumé
- Je n'ai pas beaucoup de perspicacité, mais je suis généralement satisfait de mybatis
- Pourquoi ne pas en tenir compte lors de la maintenance d'une ancienne application?