1. Interfaz GetMapper ()
Análisis: GetMapper () Interface Idept.Class Define una interfaz,
Montaje de un método que no se implementa. En términos especiales, cualquier método que toma prestado el edificio debe ser consistente con el atributo de identificación en la configuración pequeña.
A través de proxy: Genere el nombre de la clase de implementación de la interfaz, mantenga el nombre $$ Dept_abc, selectDeptbyno () en la mybatis subyacente
Es equivalente a un tipo fuerte
P.ej
Paso 1: Defina una interfaz en cn.happy.dao
paquete cn.happy.dao; import java.util.list; import cn.happy.entity.dept; interfaz pública idptdao {// ver todos ---------------- GetAlldept debe ser lo mismo que la ID en la lista de configuración pequeña <Dept> getallDept ();}; Paso 2: Configuración de IDEPT.XML PEQUEÑA CONFIGURACIÓN
Análisis: el atributo de identificación en select debe ser el mismo que el nombre del método de la interfaz en la interfaz; El nombre del paquete de atributos del espacio de nombres de mapper es cn.happy.dao.ideptdao interfaz
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapperpublic "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" Namespace = "cn.happy.dao.ideptdao"> <select id = "getAllDept" resultType = "cn.happy.entity.depto"> Seleccionar * de Dept </Select> </mapper>
Paso 3: clase de prueba
Análisis: hay dos formas de ver toda la información
1) session.selectList("cn.happy.dao.IDeptDao.getAllDept");---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2) IDEPTDAO MAPPER = Session.getMapper (idptdao.class); es equivalente a la clase de implementación, GetMapper es un tipo fuerte
// 01 View Toda la información getMapper () El nombre del método de la clase de interfaz debe ser el mismo que la ID de la configuración pequeña @TestPublic void testSelectall () {sqlsession session = factory.opensession (); // use el tipo débil ======== ENTITY Class. El nombre de ID en la configuración pequeña ============ String/*list <Dept> list = session.selectList ("cn.happy.dao.ideptdaoo.getAllDept"); for (deptept -dept: list) {system.out.println (deppt.getDeptName ();}*// use getMapper Method para ayudar a US. Clase de implementación en memoria =============== Equivalente a Tipo fuerte // Mapper es una clase de implementación Objeto idptdao mapper = session.getMapper (idptdao.class); list <dept> list = mApper.getallDept (); para (departamento de departamento: list) {System.out.println (de departamento de dept.getDeptName ());} Paso 4: use una configuración grande en todo el texto
<? xml versión = "1.0" encoding = "utf-8"?> <! DOCTYPE ConfigurationPublic "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <Configuración> <!-Cambiar el valor de la atributo de la atribución de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración de la configuración " al alias-> <typealiases> <typealias type = "cn.resultmap.enetity.emp" alias = "emp"/> </pyealiases> <entornos default = "desarrollo"> <entorno id = "desarrollo"> <transaccionManager type = "jdbc"/> <dataSeurce type = "emparejado"> <nombre de propiedad = "Valor" ovaler "o" o "ogry. /> <Property name = "url" value = "jdbc: oracle: Thin: @LocalHost: 1521: ORCL" /> <Property name = "username" value = "sa" /> <Property name = "contraseña" valor = "1" /> < /dataSource> </balindmenth> </baluthments> <!-Mapeante Archivo: Describa la correspondencia entre una entidad y una entidad de databs. Resource = "CN/ResultMap/Enetity/Emp.xml"/> </smpers> </figuration>
2. Etiqueta de mapas
Análisis: El escenario utilizado es que cuando las propiedades de la clase de entidad no coinciden con la base de datos, las propiedades de la clase de entidad y la base de datos deben ser consistentes. (Usé la clase de entidad antes)
Por ejemplo, busca a todos los empleados y departamentos afiliados
Paso 1: crear una interfaz
paquete cn.resultmap.dao; import java.util.list; import cn.resultmap.enetity.emp; interfaz pública iempdao {// Recuperar a todos los empleados y departamentos afiliados Lista pública <Emp> getAllEmps ();} Paso 2: Configure las propiedades en la configuración pequeña
Análisis: para una parte con una gran perspectiva de empleados, utilice la asociación para incorporar cada atributo de una parte. (Si se elimina la asociación, es el resultado de resultados básico)
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapperpublic "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" Namespace = "cn.resultmap.dao.iempdao"> <resultmap type = "cn.resultmap.enetity.emp" id = "empmap"> <id propiedad = "empid" columna = "empid"/> <resultado propiedad = "empname" columna = "empname"/> <results apartes = "emperhity" column = "empid"/> <! Perspectiva del empleado, utilice la asociación -> <asociación propiedad = "departamento" javatype = "cn.resultmap.enetity.dept"> <resultado propiedad = "de departamento" columna = "de departamento"/> <resultado propiedad = "deptno" columna = "deCptno"/> </sociation> </sultMap> <Select Id = "getAllEmps" resultmap = "" EMPMAP ", d.*, d.* Desde Emp E, Dept dwhere E.Deptno = d.deptno </elect> </mapper>
Paso 3: clase de prueba
// ResultMap: se garantiza que el nombre del atributo de la entidad y el nombre de campo de la tabla son consistentes con el resultado de resultados // si informa Nullexception, consulte si la asociación de mapeo de la configuración pequeña está configurada. ResultMap está configurado @testpublic void testAllEmp () {sqlsession session = factory.opensession (); iempdao mapper = session.getMapper (iempdao.class); list <embr> allemps = mappper.getallemps (); para (emp: allemps) {system.out.println (emp.getempname ()+"/t departamento de afiliado"+emp.getDept (). getDeptName ());} session.close ();} Paso 4: Introducir configuraciones pequeñas en configuraciones grandes
3. Extraer columnas SQL
Análisis: la etiqueta SQL simplifica el volumen del código en una configuración pequeña
<
4. Alias alias
Análisis: Escriba en configuraciones grandes, para que se pueda hacer referencia al alias en pequeñas configuraciones
<
5. Operación dinámica
Análisis: Los elementos principales utilizados para implementar SQL dinámico son:
Si elija (cuándo, de lo contrario) donde estable
Por ejemplo, ver a las personas en la ciudad de Beijing
Paso 1: interfaz
paquete cn.resultmap.dao; import java.util.list; import cn.resultmap.enetity.emp; interfaz pública iempdao {// Recuperar a todos los empleados y departamentos afiliados Lista pública <Emp> getAllEmps ();}Paso 2: Versión pequeña = "1.0" Encoding = "UTF-8"?>
< type = "cn.resultmap.enetity.emp" id = "empmap"> <idepers = "empid" column = "empid"/> <resultado propiedad = "empname" column = "empname"/> <resultado propiedad = "empcity" columna = "empcity"/> <!-para una parte con una gran perspectiva de empleados, por favor use la asociación-> <asociación de la propiedad = "deficiencia" javatype = "cn.resultmap.enetity.dept"> <resultado de la propiedad = "deptname" column = "de departamento"/> <resultado de resultado = "deptno" column = "deTptno"/> </resultmap> <select id = "getAllEmps" resultMap = "empmap"> select E.*, D e.deptno = d.deptno </select> <!-Query Dynamic Query-> <select id = "testallempBusElect" parametertype = "cn.resultmap.enetity.emp" resultType. "cn.resultMap.enetity.emp" resultype = "cn.resultMap.enetity.Emp" test = "Empid! = Null"> y Empid =#{Empid} </if> <if test = "EMPNAME! = NULL"> y EMPNAME =#{EMPNAME} </if> <if test = "Empcity! = Null"> y Empcity =#{EMPIM Paso 3: Prueba
// consulta dinámica @testpublic void testSelect () {sqlsession session = factory.opensession (); emp = new emp (); // emp.setempname ("331"); emp.setempcity ("sh"); list <temb> list = list = session.selectList ("cn.resultmap.dao.iempdao.testallempbuselect", emp); para (emps emps: list) {system.out.println (emps.getempname ());} session.close ();} Paso 4: Introducir configuraciones pequeñas en configuraciones grandes
Por ejemplo, modificar información del departamento
Paso 1: interfaz
Paso 2: Configuración pequeña
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapperpublic "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" namespace = "cn.resultmap.dao.ideptdao"> <resultmap type = "cn.happy.entity.depto" id = "deptresultmap"> <id propiedad = "deptno" column = "de deptno"/> <result = "deptname" column = "deptname"/> </resultmap> <select id = "getallDept" resultMap = "deptresultmap"> select d.*, e.* de departamento d, emp ewhere d.deptno = e.deptno y d.deptno =#{deTptno} </select> <!-Modificar la consulta dinámica-> <select id = "topDate" parametertype = "int" result ttype = "cn.ResultMap.eNETTY" Dept <set> <if test = "Deptno! = Null"> DeptNo =#{DeptNo}, </if> <if test = "DeptName! = Null"> Deptname =#{deTptname}, </fif> </set> where deptno =#{deptno} </select> </mapper> Paso 3: Prueba
/*** Modificación dinámica**/@testPublic void topDate () {sqlsession session = factory.opensession (); departamento depT = new Dept (); deTpt.SetDeptName ("Departamento financiero"); Dept.SetDeptNo (1); int Count = session.update ("cn.resultmap.dao.ideptdao.testupdate", departamento); session.commit (); system.out.println (count); session.close ();}La anterior es una explicación detallada de la interfaz getMapper () de myBatis, la etiqueta de mapas de resultados, alias alias, intente extraer columnas SQL y operaciones dinámicas. 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!