La diferencia entre mybatis e ibatis:
1. MyBatis implementa el enlace de la interfaz, lo que hace que sea más conveniente usar <Br /> en Ibatis2.x, necesitamos especificar a qué archivo de asignación XML corresponde en la clase de implementación DAO.
MyBatis implementa el enlace de la interfaz DAO y el archivo de mapeo XML, y genera automáticamente la implementación específica de la interfaz para nosotros, lo que facilita el uso y más conveniente.
Se puede decir que esta es la mejora más importante de MyBatis.
Aviso:
Aunque MyBatis admite el uso de la configuración de anotación directamente en la interfaz para simplificar la configuración,
Sin embargo, se recomienda encarecidamente usar el método de configuración XML. Después de todo, el método de configuración de anotación es limitado y el código es demasiado invasivo. Solo utilizando el método de configuración XML se pueden reflejar las ventajas de myBatis
2. La mejora del mapeo de relaciones de objetos es más eficiente <Br /> Creo que muchos amigos que están usando ibatis2.x no realizan la asignación de relaciones entre objetos a través del archivo de asignación XML de Ibatis. De hecho, no hay necesidad de hacer eso, porque Ibatis2.x usa "consulta de cuello" para realizar la relación entre los objetos a través del ensamblaje directo de las declaraciones de consulta, y su efecto es el mismo que la encapsulación en DAO o servicio.
Sin embargo, este método tiene "problema de consulta N+1".
En resumen, el problema de la consulta N+1 puede ser causado así:
? Ejecuta una instrucción SQL separada para obtener la lista de resultados (es decir, +1).
? Para cada registro devuelto, ejecuta una instrucción de consulta para cargar los detalles de cada carga (es decir, n).
Este problema puede hacer que se ejecute cientos de declaraciones SQL. Esto generalmente no se espera.
En MyBatis, además de ser compatible con el método de "consulta de cuello" en Ibatis2.x, también proporciona un método directo de "resultado de cuello", que es equivalente a encapsular automáticamente el objeto DTO consultado en el objeto requerido a través de una oración SQL.
Para obtener métodos de implementación específicos, consulte el Manual de usuario oficial de MyBatis por su parte y no los describa aquí.
Sin embargo, de hecho, los beneficios traídos por esta mejora son muy limitados. Debido a que este método no funciona al usar la paginación, o el conjunto de resultados de objetos anidados no puede ser paginado. Esto ha sido claramente restringido en el marco mybatis (34 líneas en org.apache.ibatis.executor.resultset.nestedResultsethandler), y hay muchos casos en los que se requiere paginación en proyectos reales ...
Si lo piensa cuidadosamente, la asignación de uno a muchos no puede estar pagando a través de archivos de configuración, porque el número de registros consultados en este momento no es igual al tamaño del objeto de retorno real, pero no entiendo por qué no se permite la asignación uno a uno. Tal vez sea porque uno a uno es un caso especial de uno a muchos, y al diseñar el marco, no se considera ni es difícil lidiar con este caso especial.
3. MyBatis utiliza poderosas expresiones basadas en OGNL para eliminar otros elementos <Br /> que las personas que están familiarizadas con Struts2 no deben estar familiarizadas con las expresiones de OGNL.
MyBatis utiliza expresiones OGNL para simplificar la complejidad de los archivos de configuración y es más simple de usar.
Tal vez está más preocupado
MyBatis implementa la unión de la interfaz, por lo que es más conveniente de usar.
Ibatis/MyBatis 3 proporciona una nueva característica: anotación.