MyBatis es un marco de persistencia de Java que asocia objetos con procedimientos almacenados o declaraciones SQL a través de descriptores o anotaciones XML.
MyBatis es un software gratuito distribuido bajo Apache License 2.0 y es una versión de la rama de Ibatis 3.0. Su equipo de mantenimiento también incluye miembros de inicio de ibatis.
A diferencia de otros marcos de mapeo relacionales de objetos, MyBatis no asocia objetos Java con tablas de bases de datos, sino métodos Java con declaraciones SQL. MyBatis permite a los usuarios aprovechar al máximo varias funciones de bases de datos, como procedimientos almacenados, vistas, varias consultas complejas y las características propietarias de una base de datos. Si desea operar en bases de datos heredadas, bases de datos irregulares o tener un control completo sobre la ejecución de SQL, MyBatis es una buena opción.
En comparación con JDBC, MyBatis simplifica el código relevante: las declaraciones SQL se pueden ejecutar en una línea de código. MyBatis proporciona un motor de mapeo que mapea declarativamente los resultados de ejecución de las declaraciones SQL con el árbol de objetos. Las declaraciones SQL se pueden generar dinámicamente utilizando un lenguaje de expresión similar a XML incorporado, o utilizando complementos integrados en velocidad de Apache.
MyBatis se integra con Spring Framework y Google Guice, que ahorra a los desarrolladores de problemas de dependencia.
MyBatis admite almacenamiento en caché de datos declarativos. Cuando una instrucción SQL se marca como "almacenable en caché", todos los datos obtenidos de la base de datos cuando se ejecute por primera vez se almacenará en un caché. Cuando esta declaración se ejecuta en el futuro, el resultado se leerá desde el caché en lugar de volver a tocar la base de datos. MyBatis proporciona una implementación de caché basada en Java Hashmap de forma predeterminada, así como un conector predeterminado para conexiones con Oscache, Ehcache, Hazelcast y Memcached. MyBatis también proporciona API para otras implementaciones de caché.
Puntos importantes
Después de aprender durante este período, el proceso principal para mybatis no puede ser los siguientes pasos
1. Obtenga el SessionFactory desde el archivo de configuración XML y luego genere la sesión correspondiente desde SessionFactory.
2. Use el objeto de sesión para completar las operaciones CRUD correspondientes (adición, eliminación, modificación y consulta) y el control de transacciones correspondiente en los datos comerciales.
3. Cierre la sesión correspondiente después de su uso para evitar el consumo excesivo de recursos
4. Use el archivo XML mapper correspondiente para configurar la operación del mapa correspondiente entre el Javabean de la entidad comercial y la tabla de la base de datos.
Preparaciones anteriores a la guerra:
1. Desarrollo Eclipse Javaee IDE, JDK 1.6, Base de datos MySQL 5.5
2. Descargue el paquete JAR correspondiente para su uso posterior
Mybatis-3.2.3.zip Después de la descompresión, elimine mybatis-3.2.3.jar, => Dirección de descarga: http://code.google.com/p/mybatis/ (paquete central mybatis)
mybatis-generator-core-1.3.1.jar => Dirección de descarga: http://code.google.com/p/mybatis/wiki/generator (MyBatis genera automáticamente el paquete de archivos de configuración)
mysql-connector-java-5.1.26-bin.jar => Dirección de descarga: http://dev.mysql.com/downloads/connector/j/ (paquete de controladores JDBC de MySQL)
Pasos de construcción
A continuación, puede crear un proyecto Java Project llamado MyBatisDemo en Eclipse, y crear la estructura del paquete y la estructura de carpetas correspondientes como se muestra en la figura a continuación, donde la configuración y el mapper son carpetas respectivamente.
El programa de corredores de demostración correspondiente y los objetos de Javabean se almacenan en el paquete David.mybatis.Demo y el paquete David.Mybatis.Model, y los paquetes de terceros JAR recién descaridos se almacenan en la carpeta Lib.
Después de crear el siguiente directorio, podemos agregar el paquete JAR correspondiente como se muestra en la figura a continuación
Después de la finalización, ejecute el siguiente SQL para establecer la estructura de la tabla requerida para la demostración, incluidas 3 tablas, visitantes (tabla de visitantes), sitio web (tabla de sitios web) y canal (tabla de canales)
/*Crear visitante*/crear tabla visitante (id int (11) no null auto_incement, nombre varchar (1000) no null, correo electrónico varchar (1000) no null, status int no null predeterminado 1, createtime dateTime, key primario (id))/*Crear tabla de sitios web*/Crear tabla Sitio web (id ID INT INT INT NULL KEY AUTO_INCRENM Status int no nulo predeterminado 1, createTime dateTime)/*Crear tabla de canal*/Crear canal de tabla (ID int no nulo clave primaria auto_increment, nombre varchar (1000) no null, sitio web de referencias de sitio web INT (id), status int no nulo predeterminado 1, createtime dateTetime)
Después de todo esto, comenzaremos a hacerlo ~
Como se mencionó al principio, todas las configuraciones de MyBatis se originan en un archivo de configuración XML. Necesitamos crear un nuevo archivo de configuración llamado MyBatis_Demo_Config.xml en la carpeta de configuración. Esta cosa es una de las operaciones centrales que necesitamos para operar más tarde.
Al configurar este archivo, debe prestar atención a los elementos en el nodo <Configuration> que tienen requisitos de orden jerárquico y no se pueden cambiar a voluntad. De lo contrario, se producirá una excepción al cargar el archivo de configuración XML, lo que resulta en operaciones posteriores no exitosas.
Para descripciones de nodos específicas, puede consultar http://mybatis.github.io/mybatis-3/zh/configuration.html#. Aquí solo hablamos de los nodos más utilizados, tipealiases, entornos, mapeadores.
1. Typealiases => Nodo de alias. Puede establecer las propiedades de este nodo para que este alias se use en lugar de un nombre totalmente calificado en el archivo de configuración.
Por ejemplo <typealias type = "David.mybatis.model.visitor" alias = "visitante" />
2. Entornos => Nodo de entorno, Configuración de información relacionada con la conexión de datos
3. Mapeadores => Configurar declaraciones de mapeo SQL.
La configuración más simple es la siguiente:
<? xml versión = "1.0" encoding = "utf-8"?> < Type = "David.mybatis.model.visitor" alias = "visitante" /> < /typealiases> <entornos default = "desarrollo"> <entorno id = "desarrollo"> <transaccionManager type = "jdbc"> < /transaccionManager> <DataSource type = "agrupado"> <nombre de propiedad = "vall" valor = "com.mysql.jdbc.dbc. />! ? UseUnicode = true & caracterSencoding = utf8 para admitir la inserción china-> <propiedad name = "url" valor = "jdbc: mysql: //127.0.0.1: 3306/mybatis_db? useunicode = true y caracteres = utf8"/> <name de propiedad = "username" valor = "root"/> <1trease "contraseña" value = "123456"/> </shasource> </entorno> </bostinments> <mappers> <mapper resource = "mapper/visitormapper.xml"/> </mappers> </figuration>
Cree una nueva clase llamada mybatisutils bajo el paquete David.mybatis.Demo, que almacena los métodos para obtener SQLSession y Cerrar SQLSession, que se extraen para facilitar la reutilización múltiple.
paquete David.mybatis.demo; import java.io.inputstream; import org.apache.ibatis.io.resources; importar org.apache.ibatis.session.sqlsession; importar org.apache.ibatis.session.sqlSessionFactory; import org.apache.session.sqlsession factory David.mybatis.model.crud_enum; clase pública mybatisutils {private static final cadena config_path = "config/mybatis_demo_config.xml"; /** Obtener enlace de acceso a la base de datos*/ public static sqlSession getSqlSession () {sqlsession session = null; intente {inputStream stream = recursos.getResourceasstream (config_path); // El entorno de base de datos correspondiente se puede leer de acuerdo con el entorno correspondiente configurado // sqlsessionFactory factory = new SqlSessionFactoryBuilder (). Build (// Stream, "Desarrollo"); SqlSessionFactory fábrica = new SqlSessionFactoryBuilder () .Build (Stream); sesión = factory.opensession (); } catch (Exception e) {// tODO: manejar excepción E.PrintStackTrace (); } Sesión de retorno; } / * * Obtener enlace de acceso a la base de datos * / public static void closesession (session session) {session.close (); } /** Return Operation Record Mensaje* / public static void showMessages (crud_enum type, int count) {switch (type) {case add: system.out.println ("agregado" + count + "registro"); romper; Delete de casos: system.out.println ("eliminado" + count + "registros."); romper; Actualización de casos: system.out.println ("actualizado" + count + "registros."); romper; consulta de casos: system.out.println ("Matched" + Count + "Records."); romper; Lista de casos: System.out.println ("Total" + Count + "Registros"); romper; predeterminado: ruptura; }}}Cree una nueva clase llamada visitante bajo el paquete David.Mybatis.Model para usarla como la correspondiente o mapeo.
paquete David.mybatis.model; import java.text.simpledateFormat; import java.util.date; public class Visitor {private int id; nombre de cadena privada; correo electrónico de cadena privada; estado privado int; Fecha privada CreateTime; visitante public () {// tODO Constructor Generado automático stub createTime = new Date (); } visitante público (nombre de cadena, correo electrónico de cadena) {this.name = name; this.email = correo electrónico; this.status = 1; this.createTime = new Date (); } public int getId () {return id; } public void setName (nombre de cadena) {this.name = name; } public String getName () {nombre de retorno; } public void setEmail (correo electrónico de cadena) {this.email = correo electrónico; } public String getEmail () {return email; } fecha pública getCreateTime () {return CreateTime; } @Override public String toString () {// TODO Auto Generado Método STUB Return String.Format ("{Id: %D, Nombre: %S, CreateTime: %S}", id, nombre, nuevo SimpleDateFormat ("yyyyy-mm-dd hh: mm: ss"). Format (createTime)); }}Cree un nuevo visitormapper.xml bajo el paquete david.mybatis.demo para mapear la declaración SQL correspondiente.
Aquí debe tener en cuenta que el espacio de nombres => David.mybatis.Demo.IVISIterSoperation debe estar asociado con el nombre de archivo real debajo del paquete correspondiente. De lo contrario, el archivo de asignación correspondiente no se puede cargar correctamente.
<mappper namespace = "david.mybatis.demo.ivisitoreperation"> <select id = "BasicQuery" parametertype = "int" resultType = "visitante"> select * de visitante donde id =#{id} y status> 0 orden por id </select> </mapper> Siguiente ejecutar el siguiente programa
public static void testBasicQuery (int id) {sqlsession session = mybatisutilss.getSqlSession (); Pruebe {visitante visitante = (visitante) session.selectone ("david.mybatis.demo.ivisitorperation.basicQuery", id); Mybatisutils.clossession (sesión); System.out.println (visitante); } Catch (Exception e) {// tODO: manejar excepción}} El resultado de ejecución más simple está fuera
Este es el helloword de la serie mybatis ~