API Java
Ahora que sabe cómo configurar MyBatis y crear archivos de mapeo, está listo para mejorar sus habilidades. La API Java de MyBatis es donde cosechas los esfuerzos que has hecho. Como verá, en comparación con JDBC, MyBatis simplifica enormemente su código y lo mantiene simple, fácil de entender y mantener. MyBatis 3 ha introducido muchas mejoras importantes para mejorar el mapeo SQL.
MyBatis 3 se basa en una API de configuración Java integral y potente. Esta API de configuración es la base de la configuración myBatis basada en XML y también es la base de una nueva configuración basada en anotaciones.
Las anotaciones proporcionan una forma simple de implementar declaraciones de mapeo simples sin introducir muchas sobrecargas.
Los objetivos y etiquetas correspondientes de las anotaciones comunes mybatis se muestran en la tabla:
| anotación | Objetivo | Etiquetas XML correspondientes |
| @Cachenamespace | amable | <cache> |
| @Cachenamespaceref | amable | <cacheref> |
| @Resultados | método | <ResultMap> |
| @Resultado | método | <resultado> <Di> |
| @Uno | método | <socals> |
| @Muchos | método | <Collection> |
@Insertar @Actualizar @Borrar | método | <sert> <Apalated> <Enlete> |
@InsertProvider @UpdateProvider @DeletEprovider @SelectProvider | método | <sert> <Apalated> <Enlete> <select> Permite la creación de SQL dinámico |
| @Param | parámetro | N / A |
| @Options | método | Propiedades de las declaraciones de mapeo |
| @seleccionar | método | <select> |
El significado de las anotaciones comunes de mybatis:
@Cachenamespace (size = 512): define el uso de cachés incorporados dentro de este espacio de nombres
@Options (useCache = true, flushcache = false, timeout = 10000): interruptor de opción para algunas consultas
@Param ("id"): alias calificados globalmente, la posición de los parámetros de consulta en la instrucción SQL ya no está en forma de 0, 1, 2, 3 ..., subíndices secuenciales, sino el nombre correspondiente, que se define aquí.
@Results es una matriz con @Result como elemento. @Result representa la relación de mapeo de un solo campo de atributos. ID = True significa que el campo ID es la clave principal. MyBatis dará las optimizaciones necesarias durante la consulta. Todos @Results en la matriz forman una relación de mapeo de un solo registro, mientras que @Results es una colección de un solo registro. Además, hay una anotación muy importante @ResultMap, que es similar a @Results
@Select ("Declaración de consulta"), @Insert ("Agregar declaración"), @Update ("Declaración de actualización") y @Delete ("Declaración de eliminación") Representan las operaciones para consultar, agregar, actualizar y eliminar datos.
A continuación, echemos un vistazo al uso de anotaciones.
(1) Uso de anotaciones regulares (no se requieren operaciones de mapa personalizadas):
Ejemplo 1
// Agregar autor @Insert ("InsertInto Autor (nombre de usuario, contraseña, correo electrónico, dirección, teléfono)" +"Valores (#{username},#{contraseña},#{correo electrónico},#{dirección},#{phone})") @options (useGeneredKeys = true, keyproperty = "autid", flohcache = false, tiempo de tiempo = 10000) público) autor); // Eliminar autor @delete ("deleteFrom Autor donde id = #{id}")@options (flushCache = false, timeout = 10000) public voidDeleteauthor (@param ("id") int id); Consejo: debe registrar un mapeador antes de llamar al método:
sessionFactory.getConfiguration (). AddMapper (testInteger.class);
O configurar <mapper> </mapper> en mapper.xml
Después de registrarse, haga que la interfaz mapeper llame normalmente
(2) Si necesita personalizar el mapa, puede usar la anotación de resultados:
Ejemplo 2
// consulta toda la información del autor @select ("select * de autor") @options (flushcache = false, timeout = 10000, useCache = true) @Results (valor = {@Result (id = true, columna = "id", propiedad = "id"), @Result (propiedad = "username", columna = "usame"), @Result (propiedad = "contraseña", columna "," contraseña ") @Result (Propiedad = "Correo electrónico", columna = "correo electrónico"), @Result (propiedad = "dirección", columna = "dirección"), @Result (propiedad = "teléfono", columna = "teléfono")}) Lista pública <Atafer> findauthors (); // consulta la información de cierto autor @select ("Seleccione * del autor donde id =#{id}) @Opciones (FlushCachey, FALSE, FALSO, FALSO, FALSO, FALSO, TIMEOUT, TIMEOUT. = 10000, useCache = true) @Results (valor = {@Result (id = true, columna = "id", propiedad = "id"), @Result (propiedad = "username", columna = "username"), @Result (propiedad = "contraseña", columna = "contraseña"), @Result ("correo electrónico", columna = "correo electrónico"), @resultado (resultado (resultado (resultado ("dirección"), columna "), @Result (" Property ", columna =" correo electrónico "). @Result (propiedad = "teléfono", columna = "teléfono")}) autor público FindAuthorByid (@param ("id") intid); Si la estructura del conjunto de resultados devuelto por múltiples consultas es la misma, puede usar @ResultMap para definir la estructura de retorno. Usando esta anotación, deberá configurar su resultado de resultados en su archivo de asignación. @ResultMap (valor = "nombre") es la identificación de resultados de resultados en el archivo de asignación. De esta manera, debe registrar su archivo de configuración en <Mapper> y usar @ResultMap en la interfaz para hacer referencia a la identificación de resultados de resultados en el archivo de configuración de la siguiente manera:
Ejemplo 3
Automapper.xml
// Cada línea de registro es un hashmap <resultmapType = "java.util.hashmap" id = "selfMap"> <resultProperty = "n" columna = "city_name"/> ....... </sultmap>
Selfmapper.java:
@Select ("Seleccione A.ID, B.Name, C.State de ............")@resultMap (value = "SelfMap") Lista pública <Hashmap> sel (); // Tenga en cuenta que la colección de la lista devuelta Caso completo
Código de interfaz
paquete com.obtk.dao; import java.util.hashmap; import java.util.list; importar org.apache.ibatis.annotations.insert; importar org.apache.ibatis.annotations.options; importar org.apache.ibatis.annotations.results; importar org.apache.ibatis.annotations.results; importar org.apache.ibatis.annotations.select; import com.obtk.entitys.studententity; interfaz pública istudentdao {@insert ("Inserte en estudiante (Stuname, género, edad, dirección, de componente)"+ "valores (#{Stuname},#{gender},#{age},#{dirección},#{deptid})") @options (useGeneredKeys = verdad stu); @Select ("Seleccione * de Student Where stuid =#{stuid}") @Results (// Mientras el valor de la propiedad que sea incompatible con el nombre de la columna está configurado, valor = {@Result (columna = "género", propiedad = "sexo")}) querybyid (intregero stuid); @Select ("Seleccione * de Student Where gender =#{qqq} y dirección =#{área}") @Results (// Mientras el valor de la propiedad de configuración = {@Result (columna = "género", propiedad = "sexo")}) Lista <deudentity> QueryByMany (HASHMAP themap); // Configuración de anotación de la Asociación Universal @Select ("Seleccione * del departamento de unión interna del estudiante d" +"en s.deptidd = d.deptid" +"Where s.gender =#{sex}" +"y d.departName =#{deptname}") Lista de <ShMap> QueryByQnn (hashmap); } Caso 1 consulta un objeto
paquete com.obtk.test; importar org.apache.ibatis.session.sqlsession; importar org.apache.ibatis.session.sqlsessionFactory; import com.obtk.dao.istudentdao; import com.obtk.entitys.studententity; import com.obtk.utils.mybatisutil; Public Class Annoselectone {public static void main (string [] args) {sqlsession session = null; SqlSessionFactory fábrica = nulo; intente {session = myBatisUtil.getSession (); fábrica = mybatisutil.getFactory (); // Asociar la configuración SQL en la interfaz con el archivo de configuración de Core Factory.getConfiguration (). AddMapper (istudentdao.class); Istudentdao studao = session.getMapper (istudentdao.class); StudentEntity Stu = studao.QueryByid (129); System.out.println (stu.getstuname ()+","+stu.getsex ()+","+stu.getaddress ()+","+stu.getstuid ()); } catch (Exception e) {E.PrintStackTrace (); } Finalmente {myBatisUtil.clossessession (); }}} El caso 2 pase múltiples parámetros y consulta múltiples objetos
paquete com.obtk.test; import java.util.hashmap; import java.util.list; import java.util.map; importar org.apache.ibatis.session.sqlsession; importar org.apache.ibatis.session.sqlsessionFactory; import com.obtk.dao.istudentdao; import com.obtk.entitys.studententity; import com.obtk.utils.mybatisutil; clase pública annoselectmany {public static void main (string [] args) {sqlsession session = null; SqlSessionFactory fábrica = nulo; intente {session = myBatisUtil.getSession (); fábrica = mybatisutil.getFactory (); // Asociar la configuración SQL en la interfaz con el archivo de configuración de Core Factory.getConfiguration (). AddMapper (istudentdao.class); Istudentdao studao = session.getMapper (istudentdao.class); Hashmap parammap = new Hashmap (); parammap.put ("qqq", "masculino"); parammap.put ("área", "dormitorio del estudiante"); Lista <StudentEntity> stulist = studao.Querybymany (Parammap); para (StudentEntity Stu: Stulist) {System.out.println (stu.getStuname ()+","+stu.getsex ()+","+stu.getaddress ()+","+stu.getstuid ()); }} catch (Exception e) {E.PrintStackTrace (); } Finalmente {myBatisUtil.clossessession (); }}} Caso 3 Agregar un objeto
paquete com.obtk.test; importar org.apache.ibatis.session.sqlsession; importar org.apache.ibatis.session.sqlsessionFactory; import com.obtk.dao.istudentdao; import com.obtk.entitys.studententity; import com.obtk.utils.mybatisutil; clase pública Annosavetest {public static void main (string [] args) {sqlsession session = null; SqlSessionFactory fábrica = nulo; intente {session = myBatisUtil.getSession (); fábrica = mybatisutil.getFactory (); // Relacionó la configuración SQL en la interfaz con el archivo de configuración central fábrica.getConfiguration (). AddMapper (istudentdao.class); Istudentdao studao = session.getMapper (istudentdao.class); StudentEntity Stu = New StudentEntity ("testc#", "hombre", 21, "plutón"); stu.setDeptidd (10); int resultado = studao.saveOne (stu); session.commit (); System.out.println ("Guardar con éxito:"+stu.getstuid ()); } catch (Exception e) {E.PrintStackTrace (); } Finalmente {myBatisUtil.clossessession (); }}}Caso 4 use hashmap para consulta de asociación
paquete com.obtk.test; import java.util.hashmap; import java.util.list; import java.util.map; importar org.apache.ibatis.session.sqlsession; importar org.apache.ibatis.session.sqlsessionFactory; import com.obtk.dao.istudentdao; import com.obtk.entitys.studententity; import com.obtk.utils.mybatisutil; clase pública Annojoinqnn {public static void main (string [] args) {sqlsession session = null; SqlSessionFactory fábrica = nulo; Prueba {// 4. Get Session Session = myBatisUtil.getSession (); fábrica = mybatisutil.getFactory (); // Asociar la configuración SQL en la interfaz con el archivo de configuración de Core Factory.getConfiguration (). AddMapper (istudentdao.class); Istudentdao studao = session.getMapper (istudentdao.class); Hashmap parammap = new Hashmap (); parammap.put ("sexo", "hombre"); parammap.put ("DeptName", "Sistema informático"); // 5. Ejecutar la lista de instrucciones <S Hashmap> stulist = studao.queryByqnn (parammap); para (hashmap theobj: stulist) {system.out.println (theobj.get ("stuid")+","+theobj.get ("género")+","+theobj.get ("stuname")+","+theobj.get ("departamento")); }} catch (Exception e) {E.PrintStackTrace (); } Finalmente {myBatisUtil.clossessession (); }}}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.