mybatis多对一数据库查询

 

 

 

StudentMapper.java

复制代码
package dao;

import pojo.Student;

import java.util.List;

public interface StudentMapper {

    //查询所有学生信息
    public List<Student> getStudent1();

    public List<Student> getStudent2();
}
复制代码

StudentMapper.xml

复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="dao.StudentMapper">

    
    <!--第一种方法-->
    <resultMap id="ST1" type="Student">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
    </resultMap>

    <select id="getStudent1" resultMap="ST1">
        select * from student
    </select>
    <select id="getTeacher" resultType="Teacher">
        select * from  teacher where id = #{id}
    </select>


    <!--===============================-->
    
    <!--第二种方法-->
    <resultMap id="ST2" type="Student">
        <result property="id" column="sid"/>
        <result property="name" column="sname"/>
        <association property="teacher" javaType="Teacher">
            <result property="name" column="tname"/>
        </association>

    </resultMap>
    <select id="getStudent2" resultMap="ST2">
        select s.id sid,s.name sname,t.name tname from student s,teacher t where s.tid=t.id
    </select>



</mapper>
复制代码

Student.java

复制代码
package pojo;

import lombok.Data;

@Data
public class Student {
    int id;
    String name;
    Teacher teacher;
}
复制代码

Teacher.java

复制代码
package pojo;


import lombok.Data;

@Data
public class Teacher {
    int id;
    String name;
}
复制代码

MyTest.java

复制代码
package dao;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import pojo.Student;
import pojo.Teacher;
import utils.MybatisUtils;

import java.util.List;

public class MyTest {
    @Test
    public void test()
    {
        SqlSession sqlSession= MybatisUtils.getSqlSession();
        TeacherMapper teacherMapper=sqlSession.getMapper(TeacherMapper.class);
        Teacher teacher = teacherMapper.getTeacher(1);
        System.out.println(teacher.getName());
        sqlSession.close();
    }
    @Test
    public void getStudent1()
    {
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
        List<Student> studentList=studentMapper.getStudent1();
        for (Student student : studentList) {
            System.out.println(student);
        }
    }
    @Test
    public void getStudent2()
    {
        SqlSession sqlSession=MybatisUtils.getSqlSession();
        StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
        List<Student> studentList=studentMapper.getStudent2();
        for (Student student : studentList) {
            System.out.println(student);
        }
    }
}
复制代码

 

 

 

 

 

 

每添加一个接口类都要在核心配置文件mybatis-config.xml中绑定接口,最好使用typeAliases简化代码

 

总体感觉来说还是第二中多对一比较好理解

 

posted @   yizhixiaozhu  阅读(73)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2020-04-19 开发冲刺二
点击右上角即可分享
微信分享提示