Tutorial de aprendizaje de introducción de Articlemybatis anterior (i): en el inicio rápido de MyBatis, hablamos sobre cómo usar mybatis para consultar los datos en la tabla de usuarios, que es una introducción preliminar a MyBatis. Hoy, explicaremos cómo usar MyBatis para realizar operaciones CRUD en la tabla de usuarios. Antes de ir al tema, agregaré algunos conocimientos básicos sobre mybatis y crud.
¿Qué es 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 busca conjuntos de resultados. MyBatis puede usar XML o anotaciones simples para la configuración y el mapeo original para mapear interfaces y Pojos de Java (objetos Java Old Old) en los registros en la base de datos.
Descarga de mybatis: https://github.com/mybatis/mybatis-3/releases
Crud significa
Crud se refiere a la abreviatura de las primeras letras de varias palabras al realizar el procesamiento de cálculo. Se usa principalmente para describir las funciones operativas básicas de la base de datos o la capa de persistencia en los sistemas de software.
Al ir al punto, el entorno de prueba utilizado en este artículo es el entorno de prueba en el artículo anterior.
1. Use mybatis para realizar operaciones CRUD en tablas - Implementación basada en XML
1. Defina el archivo XML de asignación SQL
El contenido del archivo usermapper.xml es el siguiente:
<? xml versión = "." encoding = "utf-"?> <! Doctype mapper público "-// mybatis.org//dtd mapper .//en" "http://mybatis.org/dtd/mybatis-mapper.dtd"><!-- Especifique un espacio de nombres único para este mapeador. El valor del espacio de nombres se establece convencionalmente en el nombre del archivo del mapa del paquete + SQL Nombre del archivo, de modo que el valor del espacio de nombres pueda ser garantizado para ser único. Por ejemplo, Namespace = "me.gacl.mapping.usermapper" es me.gacl.mapping (nombre del paquete) + usermapper (usermapper.xml sufijo de eliminación de archivos)-> <mapper namespace = "me.gacl.mapping.usermapper"> <! Escribir una declaración de sql de consulta en la etiqueta select, establecer el atributo de Id Attribute de la etiqueta de selección de único, y el atributo Parametertype no se puede reutilizar para indicar el tipo de parámetro utilizado en la consulta. El atributo resultante de resultados indica el tipo de conjunto de resultados devuelto por la consulta resultType = "me.gacl.domain.user" significa encapsular el resultado de la consulta en un objeto de la clase de usuario return a la clase de usuario, que es la clase de entidad correspondiente a la tabla de usuarios-> <!-Obtenga un objeto de usuario basado en la consulta de identificación-> <select id = "getuser" parametertypexype = "int" int "" int "" int "" int "" int " resultType = "me.gacl.domain.user"> seleccionar * de usuarios donde id =#{id} </select> <!-Create User (Create)-> <Insert id = "aduser" parametertype = "me.gacl.domain.user"> Insertar en usuarios (nombre, edad) valores (#{nombre},#{edad}) <//inserto> << id = "deleteuser" parametertype = "int"> Eliminar de usuarios donde id =#{id} </eletete> <!-modificar user (update)-> <update id = "updateUser" parameterType = "me.gacl.domain.user"> Update set name =#{name}, edad =#} where id =#{Id} </</} </update name = quys usss- id = "getAllusers" resultType = "me.gacl.domain.user"> Seleccionar * de los usuarios </select> </mapper> El código de clase de prueba unitario es el siguiente:
paquete me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.util.mybatisutil; import org.apache.ibatis.session.sqlsession; import org.junit.test; public class testcrudbyxmlmapper {@@@@@@@@@@@testp vestadd () sqlsession = mybatisutil.getSqlSession (falso); sqlsession sqlsession = myBatisUtil.getSqlSession (true);/*** map sql identification string,* me.gacl.mapping.usermapper el valor del valor del espacio de nombres de la etiqueta mappper en el archivo usermapper.xml,* Adduser Attriber es el valor de la etiqueta de inserto. A través del valor de atributo de ID de la etiqueta insertar, puede encontrar que el sql se ejecutará*/string statcle = "me.gacl.mapping.usermapper.adduser"; // map sql identificación cadena user = new user (); user.setName ("user lonely y canglang"); user.setage (); // realizar la operación intent INT INT INT Enviar transacciones // sqlsession.commit (); // Después de ejecutar SQL con SQLSession, debe cerrar sqlsessionsqlsession.close (); System.out.println (retresultado);}@testPublic void testupDate () {sqlsession sqlsession = myBatisUtil.getSqlSession (true);/*** map sql identificación de identificación,* me.gacl.mapping.usermapper Valor de atributo de la etiqueta de actualización. El SQL que se ejecutará se puede encontrar a través del valor de atributo de ID de la etiqueta de actualización. */String statte = "me.gacl.mapping.usermapper.updateuser"; // asignando sql id cadena user user = new user (); user.setid (); user.setName ("lonely canclang"); user.setage (); // Ejecutar la operación de modificación en intesulto = sqlSession.update (declaración, usuario); // SECEACELE es necesario cerrar sqlsession.close (); system.out.println (retresult);}@testPublic void testDelete () {sqlsession sqlsession = myBatisutil.getSqlSession (true);/*** map sql identificación de la cadena de identificación,* me.gacl.mapping.usermapper es el valor del atributo de mapperado del metra de identificación en el metra USERMAPPER.XML FILE, * DeleteUser es el valor de atributo de identificación de la etiqueta Eliminar. El SQL que se ejecutará se puede encontrar a través del valor de atributo de ID de la etiqueta Eliminar*/String Declaration = "me.gacl.mapping.usermapper.deleteUser"; // Map SQL Identification String // Ejecutar la operación de eliminación int retresulto = sqlsession.delete (declaración,); // Después de ejecutar sql con sqlsession, es necesario cerrar a cerrar, es necesario cerrar a cerrar a cerrar a cerrar a cerrar, es necesario cerrar. SqlSessionsqlSession.Close (); system.out.println (retresult);}@testPublic Void testGetAll () {sqlSession sqlSession = myBatisutil.getSqlSsession ();/*** Map Sql Identificación de identificación Cadena,* me.gacl.mapping.usermapper es el valor del Aticitud de Paper USERMAPPER.XML FILE, * GetAllUsers es el valor de atributo de identificación de la etiqueta SELECT. A través del valor de atributo de identificación de la etiqueta SELECT, puede encontrar que la instrucción SQL se ejecutará*/String se ejecuta = "me.gacl.mapping.usermapper.getAllusers"; // asignando la cadena de identidad sql // ejecutar operaciones de consulta y encapsular automáticamente los resultados de consulta en la lista <serve> regresar <user> lstusers = sqlssion.selects.selectlist (sselectlist (sselectlist (sselectiatt) después de la lista de consultas; Sqlsession ejecutar sql, debe cerrar sqlsessionsqlsession.close (); System.out.println (Lstusers);}} 2. Use mybatis para realizar operaciones CRUD en tablas - Implementación basada en anotaciones
1. Defina la interfaz para el mapeo SQL
El código de la interfaz usermapperi es el siguiente:
paquete me.gacl.mapping; import java.util.list; import me.gacl.domain.user; import org.apache.annotations.notations.delete; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.select; import org.apache.annotations.update; GACL* Defina la interfaz para la asignación de SQL, especifique que el SQL se ejecute utilizando anotaciones*/pública interface usermapperi {// use las anotaciones @insert para indicar el sql que se ejecutará mediante el método add @insertar ("insertar en los usuarios (nombre, edad) valores ( #}, name}, #{edad la edad el l}) especifique que el sql se ejecute mediante el método deletyByid@delete ("eliminar los usuarios donde id =#{id}") public int deletyById (int id); // use la anotación @update para especificar el sql que se ejecutará mediante el método de actualización@actualización ("Updone Usuarios establece el nombre de los usuarios =#}, edad}, edad =#{edad} donde id =#{id}@Update (" Updone Usuarios de actualización (Nombre de actualización) user); // use la anotación @select para especificar el sql que se ejecutará mediante el método getByid @select * de los usuarios donde id =#{id} ") público público getByid (int id); // use la anotación @select para especificar el sql para ser ejecutado por el método getall @select (" select * de los usuarios ") Lista pública <ser User> getall ();};} Cabe señalar que no necesitamos escribir un código de clase de implementación específico para la interfaz Usermapperi. Esta clase de implementación específica está construida dinámicamente por MyBatis, y solo necesitamos usarla directamente.
2. Registre esta interfaz de asignación en el archivo conf.xml
<? xml versión = "." Encoding = "UTF-"?> < /> <!-Configurar información de conexión de base de datos-> <DataSource type = "agrupado"> <propiedad name = "controlador" valor = "com.mysql.jdbc.driver" /> <propiedad name = "url" value = "jdbc: mysql: // localhost: /mybatis" /> <name de propiedad = "userName" value = "root" /> <spersion name " /> </dataSource> </entorno> </entornos> <mappers> <!- Registre el archivo usermapper.xml. Usermapper.xml se encuentra en el paquete me.gacl.mapping, por lo que el recurso se escribe como me/gacl/mapping/usermapper.xml-> <mapper recurse = "me/gacl/mapping/usermapper.xml"/> <!-Registre la interfaz de mapperación de usermapper-> <Mapper // Mappers> </Configuration>
El código de la clase de prueba unitaria es el siguiente:
paquete me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.mapping.usermapperi; import me.gacl.util.mybatisutil; importar org.apache.ibatis.session.sqlsession; import ojunit.test; public class testCrudByAnnotationMan void testAdd () {SQLSession SQLSession = myBatisUtil.getSqlSession (true); // Obtenga el objeto de clase de implementación de la interfaz Usermapperi. El objeto de clase de implementación de la interfaz Usermapperi está construido dinámicamente por SQLSession.getMapper (usermapperi.class). Usermapperi mapper = sqlsession.getMapper (usermapperi.class); user user = new user (); user.setName ("userxdp"); user.setage (); int add = mApper.add (user); // Después de usar SQLSession para ejecutar SQL, debe cerrar sqlsessessqlsession.clase ();); System.out.println (add);}@testPublic void topDate () {sqlSession sqlsession = mybatisutil.getsqlsession (true); // Obtenga el objeto de clase de implementación de la interfaz Usermapperi. El objeto de clase de implementación de la interfaz Usermapperi está construido dinámicamente por sqlsession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class); User user = new User (); user.setID (); user.setName ("long lang_xdp"); user.setage (); // Ejecutar la operación de modificación int retressult = mapper.update (user); // Después de usar sqlsession, debe cerrar sqlsessionsionssession.close.close (system.println (retresult);};}; testDelete () {SQLSession SQLSession = myBatisUtil.getSqlSession (true); // Obtenga el objeto de clase de implementación de la interfaz Usermapperi. El objeto de clase de implementación de la interfaz Usermapperi está construido dinámicamente por SQLSession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class); // Ejecutar la operación delete intent retrespresora = mapper.deletebyid (// después de usar sqlsession to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to scute, se necesita retrespondar sql. SqlSessionsqlSession.close (); System.out.println (Retresult);}@testPublic void testgetuser () {SQLSession SQLSession = myBatisUtil.getSqlSession (); // Obtenga el objeto de clase de implementación de la interfaz USERMAPPERI. El objeto de clase de implementación de la interfaz Usermapperi está construido dinámicamente por SQLSession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class); // Ejecutar operaciones de consultas y encapsular automáticamente los resultados de la consulta en el usuario de los usuarios de usuario = mapper.getByid (); SQL, debe cerrar SQLSessionsqlSession.close (); System.out.println (user);}@testPublic void testgetall () {sqlsession sqlsession = mybatisutil.getsqlsession (); // Obtenga el objeto de clase de implementación de la interfaz Usermapperi. El objeto de clase de implementación de la interfaz Usermapperi está construido dinámicamente por SQLSession.getMapper (usermapperi.class) usermapperi mapper = sqlsession.getMapper (usermapperi.class); // ejecutar la operación de consulta y encapsular automáticamente el resultado de la consulta en la lista <user> y devolver la lista <serve> mappper.getAnt. Ejecutando SQL usando SQLSession, debe cerrar sqlsessionsqlsession.close (); System.out.println (Lstusers);}} El código de clase de herramienta mybatisutil utilizado es el siguiente:
paquete me.gacl.util; import java.io.inputstream; import org.apache.ibatis.session.sqlsession; importar org.apache.ibatis.session.sqlsessionFactory; importar org.apache.ibatis.session.sqlsessionFactory; import og.apache.ibatis.session.sqlsession factory Mybatisutil {/*** get sqlSessionFactory*@return sqlSessionFactory*/public static sqlSessionFactory getSqlSessionFactory () {String Resource = "conf.xml"; inputStream is = myBatisUtil.class.getgetgeSloader (). GetRessourCeaseStream (recursos); sqlsession iSessessession = newClass.class.getgassLoader (). SqlSessionFactoryBuilder (). Build (is); return factory;}/*** get sqlSession* @return sqlSession*/public static sqlSession getSqlSession () {return getSqlSessionFactory (). OpenSession ();}/*** Get sqlSession* @Param ISAUTOcomMIT* verdadero indica que el objeto creado La transacción después de que se ejecuta SQL* False indica que el objeto SQLSession creado no confirmará automáticamente la transacción después de ejecutar SQL. En este momento, necesitamos llamar a sqlsession.commit () manualmente para enviar la transacción* @return sqlsession*/public static sqlsession getSqlSession (boolean isautocommit) {return getSqlSessionFactory (). Opensession (Isautocommit);}}¡Se han probado todos los códigos relacionados anteriormente y todos pueden usarlos con confianza!
Lo anterior es el tutorial de aprendizaje mybatis presentado por el editor (ii): cómo usar mybatis para realizar operaciones CRUD en la tabla de usuarios. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!