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 encapsulación de búsqueda del conjunto de resultados. MyBatis puede usar XML o anotaciones simples para la configuración y mapeo original, mapeo de interfaces y Pojos de Java (objetos Java Old Old) en los registros en la base de datos.
En el artículo anterior, les presentaré el tutorial sobre mapeo de mybatis uno a uno.
Déjame contarte sobre mybatis muchos a muchos conocimientos de mapeo. Los detalles específicos son los siguientes:
Hay muchos ejemplos de muchos a muchos, como la relación entre el curso y los estudiantes. Un curso puede tener múltiples estudiantes electivos, y un estudiante también puede tomar múltiples materias. La relación entre maestros y estudiantes: un maestro tiene múltiples estudiantes y un alumno tiene múltiples maestros.
Tome la relación entre los estudiantes y el curso como ejemplo.
Cuando creamos tablas de datos, tenemos dos soluciones:
El primer tipo:
Al crear una tabla de datos de estudiante, almacene un campo de clave extranjera para un curso.
Al crear una tabla de datos del curso, almacene el campo de la clave extranjera de un estudiante.
Pero esto tiene una gran desventaja, es decir, si quiero eliminar la mesa de los estudiantes, hay un campo de clave extranjera de la tabla del curso.
Del mismo modo, cuando quiero eliminar la tabla del curso, hay campos de clave extranjera de la tabla de estudiantes. Oh, no es fácil de tratar.
El segundo tipo:
Creamos tablas de estudiantes y cursos, y almacenamos sus respectivos campos y registros en las dos tablas.
Otra tabla común de Student_Course se usa como una tabla intermedia para almacenar claves extranjeras para estudiantes y curso.
Esto es muy conveniente para nosotros eliminar la tabla de palabras, por lo que adoptamos esta solución.
Scripts de base de datos
-MAPIACIÓN DE MUCHAS A MANY-Eliminar la base de datos de la caída de la base de datos si existe myBatis;-Crear base de datos Crear base de datos si no existe myBatis Establecimiento de caracteres predeterminado Utf8;-Seleccione la base de datos Use myBatis;-Eliminar tabla de datos Tabla de caída si existe el estudiante; table de caída; PK_SID CLAVE PRIMARIA (SID)); Crear curso de tabla (CID int (255), Cname Varchar (32), Restricción PK_CID Clave primaria (CID)); cree tabla student_course (SID int (255), Cid int (255), restricción pk_sid_cid key primaria (sid, cid), restricción fk_sid de la clave extranjera (sid) referencias (sid), restricción fk_cid key (cid) referencias curso (CID)); (2, 'ha'); insertar en el curso (cid, cname) valores (1, 'java'); insertar en el curso (cid, cname) valores (2, '. Net'); insertar en student_course (sid, cid) valores (1,1); insertar en student_course (sid, cid) valores (1,2); insertar en student_course (sid, cid); (Sid, Cid) valores (2,2);
Crea un nuevo Many2Many.Course.Java Clase
paquete Many2Many; import java.io.Serializable; import java.util.arrayList; import java.util.list;/*** curso*@author administrador **/ @supressWarnings ("serial") Curso de clase pública implementa serializable {privado inyer cid cid; string cname; private list <dirding> students = new shreaylist <newlist <) getCid () {return cid;} public void setcid (integer cid) {this.cid = cid;} public String getCname () {return cname;} public void setCname (string cname) {this.cname = cname; {this.students = students;}}Crea una nueva clase de Many2Many.student.Java
paquete Many2Many; import java.io.Serializable; import java.util.arrayList; import java.util.list;/*** Clase de estudiante*@author Administrator **/ @supressWarnings ("serial") Clase pública implementa serializable {privado privado sid; string string sname; lista privada <surse> curses = new ariallist <) getSid() {return sid;}public void setSid(Integer sid) {this.sid = sid;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public List<Course> getCourses() {return courses;}public void setCourses(List<Course> courses) {this.Courses = cursos;}}Cree un nuevo archivo StudentMapper.xml y archivo CoursEmapper.xml
<? xml versión = "1.0" encoding = "utf-8"?> < type = "Many2Many.student" id = "StudentMap"> <id Property = "Sid" column = "sid"/> <resultado propiedad = "sname" column = "sname"/> <resultado propiedad = "sname"/> </resultmap> <? xml versión = "1.0" encodpoding = "ut-8"?> < 3.0 // en "" http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namespace =" CourSenamespace "> <resultmap type =" many2Many.course "id =" CourSapsp "> <Idperter =" Cid "columna =" CID "/> <Result Property =" CNAME CNAME "CNAME" CNAME "CNAME" columna = "cname"/> <resultmap> <!-consulta los cursos que tomó en "jaja"-> <select id = "findallByName" parametertype = "string" resultmap = "CourSempap"> Seleccionar c.cname, c.cid de Student s, curso c, student_course scwhere s.sid = sc.sid y c.cid = sc.cid y s.sname = #{sname}; </elect> </mapper>Cree una nueva clase de Persistencia ClassCoursDaoo.Java Clase
paquete Many2Many; import java.util.iterator; import java.util.list; import One2Many.student; import org.apache.ibatis.session.sqlsession; import org.junit.test; import utilic.mybatisutil; estudiante de clase pública coursedaoo {/*** consulta "hhaha" y tomó el nombre electivo de la clase* @return* @throws Exception*/public List <curse> findallByName (nombre de cadena) lanza la excepción {sqlSession sqlsession = null; try {sqlsession = myBatisUtil.getSqlSession (); return sqlSession.selectList ("CoursSpace.findallByName", name);} e;} finalmente {myBatisUtil.ClossqlSession ();}}@testPublic void testFindallByName () arroja excepción {StudentCoursEdao Dao = New StudentCoursEdAo (); List <Cutsurse> Courses = dao.findallbyname ("Haha"); para (curso: cursos) {System.out.println (curso.getCid ()+":"+curso.getcname ());}}}Cargar el archivo de configuración en el archivo mybatis.cfg.xml
< Resource = "Many2Many/StudentMapper.xml"/> <mapper resource = "Many2Many/CourSEmapper.xml"/> <mapper resource = "Many2Many/CourSEmapper.xml"/> <mapper resurce = "Many2Many/CoRsemapper.xml"/> <mapper Resource = "Many2Many/CourSEmapper.xml"/> <Mappers>
Lo anterior es el primer tutorial sobre MyBatis Many-Muyy Mapping presentados por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!