El predecesor de MyBatis era Ibatis, que originalmente era un proyecto de código abierto de Apache. En 2010, este proyecto se trasladó de Apache Software Foundation a Google Code y pasó a llamarse MyBatis. MyBatis es un excelente marco de capa de persistencia que admite consultas SQL simples, procedimientos almacenados y mapeo avanzado. MyBatis elimina la configuración manual de casi todos los códigos y parámetros JDBC y la recuperación de conjuntos de resultados. MyBatis utiliza XML o anotaciones simples para la configuración y mapeo original, mapeo de interfaces y POJOS de Java (planifica los objetos Java antiguos, objetos Java ordinarios) en registros en la base de datos.
La arquitectura funcional de MyBatis se divide en tres capas (la imagen se toma prestada de la enciclopedia de Baidu):
1) Capa de interfaz API: proporciona API de interfaz para uso externo, a través de la cual los desarrolladores manipulan las bases de datos. Una vez que la capa de interfaz recibe la solicitud de llamadas, llamará a la capa de procesamiento de datos para completar el procesamiento de datos específico.
2) Capa de procesamiento de datos: responsable de la búsqueda SQL específica, el análisis SQL, la ejecución de SQL y el procesamiento de mapeo de resultados de ejecución, etc. Su objetivo principal es completar una operación de base de datos basada en la solicitud de la llamada.
3) Capa de soporte básica: responsable del soporte funcional más básico, incluida la gestión de la conexión, la gestión de transacciones, la carga de configuración y el procesamiento de caché. Todas estas son cosas comunes, extrayendo como los componentes más básicos. Proporciona el soporte más básico para la capa superior de la capa de procesamiento de datos.
Aquí hay un simple mybatis usando demostración.
Estructura general
Dependencia de POM
Se deben hacer referencia a dos paquetes JAR, uno es mybatis y el otro es mysql-connector-java. Si se trata de un proyecto Maven, agregue dependencias en el POM de la siguiente manera.
<Spendency> <MoupRoMID> org.mybatis </groupid> <artifactid> mybatis </artifactid> <verSerse> 3.2.3 </versewers> </pendency> <pendency> <grupoID> mysql </groupid> <artifactid> mysql-connector-java </arfactid> <veresion> 5.1.26 </versión> </versión> </versión>
Preparación de datos
Crear datos de puntos en MySQL para pruebas:
Crear base de datos mybatis_test; cree el usuario de la tabla (edad del entero de edad no nulo, nombre varchar (64) no nulo predeterminado ''); insertar valores del usuario (18, 'zhanjindong'); insertar valores de usuario (20, 'zhangsan');
Archivo de configuración
Se requieren dos tipos de archivos de configuración. Uno es el archivo de configuración mybatis mybatis-config.xml. En el ejemplo, es una configuración muy simple. Hay muchas instrucciones para la configuración detallada en Internet.
<? xml versión = "1.0" encoding = "utf-8"?> < name = "Cacheenabled" value = "false" /> <setting name = "useGeneratedKeys" value = "true" /> <setting name = "defaultExeCutortype" value = "reutilizarse" /> </etentings> <pyealiases> <Pypealias alias = "user" type = "test.mybatis.user" /> </ / / / / /typealeses> <enthuminments predettion = "desarrollo"> "Úndato =" Id. <TransActionManager type = "jdbc"/> <dataSource type = "agrupado"> <propiedad name = "controlador" value = "com.mysql.jdbc.driver"/> <propiedad name = "url" value = "jdbc: mysql: //192.168.71.38: 3306/mybatis_test"/> <nombre de propiedad " value = "root"/> <propiedad name = "contraseña" value = "123456"/> </shasource> </balindment> </entornos> <mappers> <mapper resource = "mappers/usermapper.xml"/> </mappers> </configuración>
Otro tipo es el archivo de asignación de interfaz de acceso a datos: en el ejemplo es usermapper.xml. Este archivo se puede encontrar mediante SRC/Main/Resource o Subdirectorio MyBatis. Se especifica por el recurso del nodo Mappers/Mapper en MyBatis-Config.xml.
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtdd"><mapper namespace =" test.myaper ".myapper ". < Nombre del método de la interfaz en la interfaz Usermapper-> <select id = "getUser" resultType = "user" parametertype = "java.lang.string"> Seleccionar * del usuario donde name =#{name} </select> </mapper> El archivo de mapeo correspondiente es la interfaz Usermapper en el espacio de nombres test.mybatis, que solo define la interfaz para acceder a la tabla de datos:
paquete test.mybatis; interfaz pública usermapper {public void insserser (usuario usuario); Usuario público getUser (nombre de cadena);} Necesito un pojo: user.java
paquete test.mybatis; User de clase pública {nombre de cadena privada; edad de entero privado; public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public Integer GetAge () {return Age; } public void setAge (edad entera) {this.age = edad; } Usuario público (nombre de cadena, edad entero) {super (); this.name = name; this.age = edad; } Public User () {super (); }} prueba
La operación de la base de datos MyBatis utiliza una clase llamada SQLSession. Esta clase se genera a través de SQLSessionFactory. Generalmente se recomienda mantener una SQLSessionFactory a nivel mundial.
Testmybatis.java
paquete test.mybatis; import java.io.ioException; import java.io.reader; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlsessionFactory; importar org.apache.ibatis.session.sqlSessionFactory; sqlsessionFactory; static {String Resource = "MyBatis-Config.xml"; Lector lector = null; prueba {lector = recursos.getResourCeAsreader (recurso); } catch (ioException e) {System.out.println (E.GetMessage ()); } sqlSessionFactory = new SqlSessionFactoryBuilder (). Build (Reader); } public static sqlSessionFactory getSqlSessionFactory () {return sqlSessionFactory; }}El código de prueba es el siguiente:
Testmybatis.java
paquete test.mybatis; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsessionFactory; public class testMybatis {sqlsessionfactory sqlsessionFactory = null; static {sqlSessionFactory = myBatisUtil.getSqlSessionFactory (); } public static void main (string [] args) {testAdd (); getUser (); } public static void testAdd () {sqlSession sqlsession = sqlSessionFactory.opensession (); Pruebe {usermapper usermapper = sqlsession.getMapper (usermapper.class); Usuario user = nuevo usuario ("Lisi", nuevo entero (25)); usermapper.insertuser (usuario); sqlsession.commit (); // debe enviar aquí, de lo contrario, los datos no ingresarán la base de datos} finalmente {sqlsession.close (); }} public static void getUser () {sqlSession sqlsession = sqlSessionFactory.opensession (); Pruebe {usermapper usermapper = sqlsession.getMapper (usermapper.class); Usuario user = usermapper.getuser ("zhangsan"); System.out.println ("Name:" + user.getName () + "| edad:" + user.getage ()); } finalmente {sqlsession.close (); }}} Cosas a tener en cuenta
1. MyBatis usará log4J para grabar registros, pero encender el modo de depuración parece tener un impacto muy fuerte en el rendimiento.
2. El caché de consulta de MyBatis tiene un gran impacto en el rendimiento, y la brecha entre habilitar y no habilitar es muy grande.
Nota: La línea de caché se debe agregar al archivo mapper, de lo contrario no entrará en vigencia.
Descarga del código de muestra: descarga del código
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.