Mybatis é uma excelente estrutura de camada de persistência que suporta consultas SQL simples, procedimentos armazenados e mapeamento avançado. O MYBATIS elimina as configurações manuais de quase todo o código e parâmetros JDBC e o encapsulamento de pesquisa do conjunto de resultados. O Mybatis pode usar XML simples ou anotações para configuração e mapeamento original, interfaces de mapeamento e POJOS de Java (objetos Java antigos simples) para registros no banco de dados.
No artigo anterior, apresentarei a você o tutorial sobre o Mybatis One-to-One Mapping.
Deixe-me falar sobre o conhecimento de mapeamento de muitos para muitos. Os detalhes específicos são os seguintes:
Existem muitos exemplos muitos para muitos, como o relacionamento entre o curso e os alunos. Um curso pode ter vários alunos eletivos e um aluno também pode levar várias disciplinas. A relação entre professores e alunos: um professor tem vários alunos e um aluno tem vários professores.
Pegue o relacionamento entre os alunos e o curso como exemplo.
Quando criamos tabelas de dados, temos duas soluções:
O primeiro tipo:
Ao criar uma tabela de dados do aluno, armazene um campo de chave estrangeira para um curso.
Ao criar uma tabela de dados do curso, armazene o campo de chave estrangeira de um aluno.
Mas isso tem uma grande desvantagem, ou seja, se eu quiser excluir a tabela de estudantes, há um campo chave estrangeira da tabela do curso.
Da mesma forma, quando quero excluir a tabela do curso, há campos de chave estrangeira da tabela de estudantes. Oh, não é fácil lidar.
O segundo tipo:
Criamos tabelas de estudantes e cursos e armazenamos seus respectivos campos e registros nas duas tabelas.
Outra tabela comum de Student_course é usada como uma tabela intermediária para armazenar chaves estrangeiras para estudante e curso.
Isso é muito conveniente para excluirmos a tabela de palavras, por isso adotamos esta solução.
Scripts de banco de dados
-Mapeamento de muitos para muitos-Exclua o banco de dados do banco de dados, se existir MyBatis;-Crie banco de dados Crie banco de dados Se não existir Mybatis Definir de caracteres padrão UTF8;-Selecione o banco de dados Use MyBatis;-Excluir tabela de dados Tabela de dados se existe para o aluno; tabela de soltamento se existe; PK_SID Chave primária (SID)); Cree Course Table Course (CID INT (255), CNAME VARCHAR (32), RESTIRN PK_CID PRIMÁRIO CHAVE (CID)); create table student_course(sid int(255),cid int(255),constraint pk_sid_cid primary key(sid,cid),constraint fk_sid foreign key (sid) references student(sid),constraint fk_cid foreign key (cid) references course(cid) );-- Test data insert into student (sid,sname) values (1,'ha');insert into student (sid,sname) values (2, 'ha'); inserir valores de curso (CID, CNAME) (1, 'java'); inserir valores de curso (CID, CNAME) (2, '. Valores do Student_Course (SID, CID) (2,2);
Crie uma nova classe Many2Many.course.java
Pacote Many2Many; importar java.io.Serializable; importar java.util.arraylist; importar java.util.list;/*** curso*@author administrador **/ @supleningnings ("serial") public Course Coursemments Serializable {privado integergle; getCid () {return cid;} public void setCid (Integer cid) {this.cid = cid;} public string getCName () {return cname;} public void setcname (string cname) {this.cname = cname;} public list <tation> Settudents; {this.students = estudantes;}}Crie uma nova classe Many2Many.student.java
Pacote Many2Many; importar java.io.Serializable; importar java.util.ArrayList; importar java.util.list;/*** Classe de estudante*@Author Administrator **/ @suprimento; getsid () {return sid;} public void Setsid (inteiro sid) {this.sid = sid;} public string getsName () {return sname;} public void setSname (string sname) {this.sname = sname;} public list <course> getcourss () {retress; {this.courses = cursos;}}Crie um novo arquivo studentmapper.xml e arquivo CourSemapper.xml
<? xml versão = "1.0" coding = "utf-8"?> <! type = "Many2Many.student" id = "studentMap"> <id de propriedade = "sid" column = "sid"/> <result Property = "sname" colun = "sname"/> <result Property = "sname"/> </ResultMap> <? xml versão "1.0" coding = "utf-8"> <! 3.0 // pt "" http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapaper namespace =" courseNamespace "> <resultMap type =" Many2Many.Course "id =" CourseMap "> <id) <id =" cid " Column = "cname"/> <sultmap> <!-Consulte os cursos que você fez em "haha"-> <select id = "findAllbyname" parametertype = "string" resultmap = "courseMap"> selecione c.cname, c.cid de Student s, curso c, student_courest s.sid = sc.sing = sc.sid = c.cname, c.cid de Student s, curso c, student_course s.sid = sc.ss = sc.sid e sc.sid e c.cid. #{sname}; </leclect> </mapper>Crie uma nova aula de classe de persistência da camada de camada acentu -turceao.java
Pacote Many2Many; importar java.util.iterator; importar java.util.list; importar one2Many.student; importar org.apache.ibatis.session.sqlSession; importar o nome do @Terg.Junit.test; @return* @throws Exception*/public List <Course> findAllByName (nome da string) lança exceção {sqlSession sqlSession = null; try {sqlSession = mybatisutil.getSqlSession (); retorna sqlsession.selectList ("coursenamespace.findLyname" E;} finalmente {mybatisutil.clossesqlSession ();}}@testpublic void testFindallByName () lança exceção {StudentCourSedao Dao = novo StudentCourSedao (); Lista <Curch> Courses = DAO.FINDALLBYNAME ("haha"; {System.out.println (curso.getCid ()+":"+curso.getCName ());}}}Carregar arquivo de configuração em mybatis.cfg.xml arquivo
<!-Carregar o arquivo de mapeamento-> <Mapper Resource = "One2One/Cardmapper.xml"/> <Mapper Resource = "One2one/studentmapper.xml"/> <mapper Resource = "One2Many/Grademapper.xml"/> <Mapper Resource = "One2many/stateMappper.xml" Maior "> resource="many2many/StudentMapper.xml"/><mapper resource="many2many/CourseMapper.xml"/><mapper resource="many2many/CourseMapper.xml"/><mapper resource="many2many/CourseMapper.xml"/><mapper resource="many2many/CourseMapper.xml"/><mappers>
O acima é o primeiro tutorial sobre o mapeamento de muitos para muitos Mybatis apresentado a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!