MyBatis de aprendizagem de Java (2)


Primeiro, anexe o endereço de aprendizado que Nan Ge ensina a aprender java


1. Continue aprendendo o MyBatis hoje mesmo e siga o blogueiro para aprender consultas em cascata um-para-muitos (encontre turmas pelos alunos) Vamos, anexe o código para gravar suas anotações de estudo.

  • Primeiro anexe a estrutura do arquivo:
    Estrutura de arquivo
  • Novas tabelas foram adicionadas ao banco de dados:
    tabela de classe
    mesa do aluno

Esta é uma consulta de relacionamento um para muitos, usando duas tabelas.

  • O próximo passo é definir os dados da tabela no banco de dados correspondente!
    • Classe do aluno:
package com.southwind.entity;

import lombok.Data;

@Data
public class Student {
    private int id;
    private String name;
    private Classer classer;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

  • Em seguida é a classe Classer:
package com.southwind.entity;

import lombok.Data;

import java.util.List;

@Data
public class Classer {
    private int id ;
    private String name;
    private List<Student> students;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

  • Crie uma interface StudentRepository
package com.southwind.repository;

import com.southwind.entity.Student;

public interface StudentRepository {
    public Student findById(int id);
}

  • Crie um arquivo XML para operar:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 一对多的级联查询 -->
<mapper namespace="com.southwind.repository.StudentRepository">
<!--    查询语句-->
    <select id="findById" parameterType="int" resultMap="studentMap">
        select s.id,s.name,c.id as cid,c.name as cname
        from student s,class c
        where s.id = #{id} and s.cid = c.id
    </select>
<!--    结果集映射 间接映射 专门处理不能直接映射的情况-->
<!--    column 数据库字段 -->
<!--    property 类里的属性-->
    <resultMap id="studentMap" type="com.southwind.entity.Student">
        <id column="id" property="id"></id>
        <result column="name" property="name"></result>
        <association property="classer" javaType="com.southwind.entity.Classer">
            <id column="cid" property="id"></id>
            <result column="cname" property="name"></result>
        </association>
    </resultMap>
</mapper>
  • Em seguida, crie uma classe de teste:
package com.southwind.test;

import com.southwind.repository.StudentRepository;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class Test_3 {
    public static void main(String[] args) {
        //        加载配置文件
        InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
//获取实现接口的代理对象
        StudentRepository studentRepository = sqlSession.getMapper(StudentRepository.class);
        System.out.println(studentRepository.findById(1));
        sqlSession.close();
    }
}

  • Não se esqueça de registrar o arquivo XML
     <mapper resource="com/southwind/repository/StudentRepositoryMapper.xml"></mapper>

Anexe o gráfico de resultados em execução:

Insira a descrição da imagem aqui

A seguir, uma consulta muitos-para-um:

  • A primeira é a interface ClassesRepository:
package com.southwind.repository;

import com.southwind.entity.Classer;

public interface ClassesRepository {
    public Classer findById(int id);
}

  • A seguir, está o arquivo ClassesRepository.xml:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 多对一 的级联查询 -->
<mapper namespace="com.southwind.repository.ClassesRepository">
    <!--    查询语句-->
    <select id="findById" parameterType="int" resultMap="classesMap">
        select s.id,s.name,c.id as cid,c.name as cname
        from student s,class c
        where c.id = #{id} and s.cid = c.id
    </select>
    <!--    结果集映射 间接映射 专门处理不能直接映射的情况-->
    <!--    column 数据库字段 -->
    <!--    property 类里的属性-->
    <resultMap id="classesMap" type="com.southwind.entity.Classer">
        <id column="cid" property="id"></id>
        <result column="cname" property="name"></result>
<!--        ofType 指的是它的泛型-->
        <collection property="students" ofType="com.southwind.entity.Student">
            <id column="id" property="id"></id>
            <result column="name" property="name"></result>
        </collection>
    </resultMap>
</mapper>
  • Então a classe de teste Test_4:
package com.southwind.test;

import com.southwind.repository.ClassesRepository;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class Test_4 {
    public static void main(String[] args) {
        //        加载配置文件
        InputStream inputStream = Test.class.getClassLoader().getResourceAsStream("config.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        ClassesRepository classesRepository = sqlSession.getMapper(ClassesRepository.class);
        System.out.println(classesRepository.findById(1));
        sqlSession.close();
    }
}

  • Cole o resultado em execução:
    Insira a descrição da imagem aqui

Os dados também têm muitas instruções de operação, bem, ele precisa fortalecer seu conhecimento sobre SQL.


Publicado 20 artigos originais · elogiado 4 · visitas 612

Acho que você gosta

Origin blog.csdn.net/qq_45031575/article/details/105027068
Recomendado
Clasificación