广告
返回顶部
首页 > 资讯 > 精选 >MyBatis中怎么实现一对多查询和多对一查询
  • 219
分享到

MyBatis中怎么实现一对多查询和多对一查询

2023-06-29 00:06:12 219人浏览 独家记忆
摘要

这篇“mybatis中怎么实现一对多查询和多对一查询”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MyBatis中怎么实现一

这篇“mybatis中怎么实现一对多查询和多对一查询”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MyBatis中怎么实现一对多查询和多对一查询”文章吧。

1、多对一

1、1环境搭建

数据库

CREATE TABLE teacher (id INT(10) NOT NULL,NAME VARCHAR(64) DEFAULT NULL,PRIMARY KEY (id),)ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO teacher (id ,NAME) VALUES (1,'罗老师');CREATE TABLE student (id INT(10) NOT NULL,NAME VARCHAR(64) DEFAULT NULL,tid INT(10) DEFAULT NULL,PRIMARY KEY (id),KEY fktid (tid),CONSTRaiNT fktid FOREIGN KEY (tid) REFERENCES teacher (id))ALTER TABLE student ENGINE=INNODB DEFAULT CHARSET=utf8;INSERT INTO student (id ,NAME ,tid) VALUES (1,'小明',1);INSERT INTO student (id ,NAME ,tid) VALUES (2,'小红',1);INSERT INTO student (id ,NAME ,tid) VALUES (3,'小张',1);INSERT INTO student (id ,NAME ,tid) VALUES (5,'小罗',1);

MyBatis.xml配置

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "Http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <settings>        <setting name="logImpl" value="STDOUT_LOGGING"/><!--日记log4j-->    </settings>    <typeAliases>        <package name="com.Google.pojo"/><!--给实体类取别名-->    </typeAliases>    <!--<typeAliases>        <typeAlias type="com.Google.pojo.User" alias="user"/>    </typeAliases>-->    <environments default="development"><!--可以创建多个环境-->        <environment id="development">            <transactionManager type="JDBC"/>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver"/><!--加载驱动-->                <property name="url" value="jdbc:Mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><!--连接数据库-->                <property name="username" value="root"/>                <property name="passWord" value="root"/>            </dataSource>        </environment>    </environments>    <!--注册接口-->    <mappers>        <mapper resource="com/Google/Dao/StudentMapper.xml"/>        <mapper resource="com/Google/Dao/TeacherMapper.xml"/>    </mappers></configuration>

1、2编写实体类、

学生&middot;

@Datapublic class Student {    private int id;    private String name;    private Teacher teacher;}

老师&middot;

@Datapublic class Teacher {    private int id;    private String name;}

1、3编写接口方法

public interface  StudentMapper {    List<Student> getStudentList();    List<Student> getStudentList1();}

1、4编写Mapper

<?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.Google.Dao.StudentMapper">    <!--按照查询嵌套处理-->    <select id="getStudentList" resultMap="StudentMap">        select * from student    </select>    <resultMap id="StudentMap" type="Student" >        <result property="id" column="id"/>        <result property="name" column="name"/>        <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>    </resultMap>    <select id="getTeacher" resultType="Teacher">        select * from teacher    </select>    <!--按照结果嵌套处理-->    <select id="getStudentList1" resultMap="StudentMap1">        select s.id sid,s.name sname,t.name tname        from Student s,Teacher t        where s.tid=t.id    </select>    <resultMap id="StudentMap1" type="Student">        <result property="id" column="sid"/>        <result property="name" column="sname"/>        <association property="teacher" javaType="Teacher" >            <result property="name" column="tname"/>        </association>    </resultMap></mapper>

1、5实现

package com.Google.Dao;import com.Google.pojo.Student;import com.Google.units.sqlSessionFactory;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import java.util.List;public class StudentMapperText {    @Test    public void getStudent(){        SqlSession sqlSession = sqlSessionFactory.getsqlSession();        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);        List<Student> studentList = mapper.getStudentList();        for (Student student : studentList) {            System.out.println(student);        }        sqlSession.close();    }    @Test    public void getStudent1(){        SqlSession sqlSession = sqlSessionFactory.getsqlSession();        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);        List<Student> studentList = mapper.getStudentList1();        for (Student student : studentList) {            System.out.println(student);        }        sqlSession.close();    }}

1、6运行结果

Student(id=1, name=小明, teacher=Teacher(id=0, name=罗老师))
Student(id=2, name=小红, teacher=Teacher(id=0, name=罗老师))
Student(id=3, name=小张, teacher=Teacher(id=0, name=罗老师))
Student(id=4, name=小王, teacher=Teacher(id=0, name=罗老师))
Student(id=5, name=小罗, teacher=Teacher(id=0, name=罗老师))

2、一对多

2、1环境搭建和一对多一样

2、2编写实体类

@Datapublic class Student {    private int id;    private String name;    private int tid;}
@Datapublic class Teacher {    private int id;    private String name;    //一个老师拥有多个学生,给老师创建一个学生集合    private List<Student> student;}

2、3编写接口的方法

public interface TeacherMapper {    Teacher getTeacher(@Param("tid") int id);    Teacher getTeacher1(@Param("tid") int id);}

2、4编写Mapper配置

<?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.Google.Dao.TeacherMapper">    <!--按结果嵌套查询-->    <select id="getTeacher" resultMap="TeacherStudent">        select s.id sid, s.name sname, t.id tid, t.name tname        from student s,             teacher t        where s.tid = t.id          and t.id = #{tid}    </select>    <resultMap id="TeacherStudent" type="Teacher">        <result property="id" column="tid"/>        <result property="name" column="tname"/>        <!--ofType="" 用于获取集合中泛型的信息-->        <collection property="student" ofType="Student">            <result property="id" column="sid"/>            <result property="name" column="sname"/>            <result property="tid" column="tid"/>        </collection>    </resultMap>    <!--嵌套表查询(子查询)-->    <select id="getTeacher1" resultMap="TeacherStudent1">        select * from teacher where id=#{tid}    </select>    <resultMap id="TeacherStudent1" type="Teacher">        <result property="id" column="id"/>        <collection property="student" javaType="ArrayList" ofType="Student" select="getStudetByID" column="id"/>    </resultMap>    <select id="getStudetByID" resultType="Student">        select * from student where tid=#{tid}    </select></mapper>

2、5实现

public class TeacherMapperText {    @Test    public void getTeacher(){        SqlSession sqlSession = sqlSessionFactory.getsqlSession();        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);        Teacher teacher = mapper.getTeacher(1);        System.out.println(teacher);        sqlSession.close();    }    @Test    public void getTeacher1(){        SqlSession sqlSession = sqlSessionFactory.getsqlSession();        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);        Teacher teacher1 = mapper.getTeacher1(1);        System.out.println(teacher1);        sqlSession.close();    }}

2、6运行结果

Teacher(id=1, name=罗老师, student=[Student(id=1, name=小明, tid=1), Student(id=2, name=小红, tid=1), Student(id=3, name=小张, tid=1), Student(id=4, name=小王, tid=1), Student(id=5, name=小罗, tid=1)])

以上就是关于“MyBatis中怎么实现一对多查询和多对一查询”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: MyBatis中怎么实现一对多查询和多对一查询

本文链接: https://www.lsjlt.com/news/321467.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MyBatis中怎么实现一对多查询和多对一查询
    这篇“MyBatis中怎么实现一对多查询和多对一查询”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MyBatis中怎么实现一...
    99+
    2023-06-29
  • Mybatis怎么实现一对一、一对多关联查询
    今天小编给大家分享一下Mybatis怎么实现一对一、一对多关联查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Mybati...
    99+
    2023-07-05
  • MyBatis如何实现多表查询(多对一、一对多)
    MyBatis实现多表查询  一、多对一查询 数据库的准备 创建两张表,一张老师表,一张学生表 将老师主键id关联学生外键tid 创建sql的语句 create ta...
    99+
    2022-11-12
  • mybatis一对多嵌套查询怎么实现
    本文小编为大家详细介绍“mybatis一对多嵌套查询怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis一对多嵌套查询怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。mybatis一对多嵌...
    99+
    2023-07-05
  • mybatis一对一查询一对多查询遇到的问题怎么解决
    这篇文章主要介绍“mybatis一对一查询一对多查询遇到的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mybatis一对一查询一对多查询遇到的问题怎么解决”文章能帮助大家解决问题。实体...
    99+
    2023-06-30
  • SpringBoot中Mybatis注解一对多和多对多查询实现示例
    目录一、模拟的业务查询二、对应的实体类如下三、对应的建表语句和模拟数据如下四、@One一对一映射五、@Many一对多查询六、@One @Many的总结一、模拟的业务查询 系统中的用户...
    99+
    2022-11-13
  • 关于mybatis一对一查询一对多查询遇到的问题
    springboot整合mybatis项目博客系统文章,相册,评论,标签,等表IDEA为最新版2021.3.3,mysql数据库为最新版Navicat(或许有些字段不支持特定的命名)...
    99+
    2022-11-13
  • Mybatis多对一查询的实现方法
    目录架构环境搭建数据库实体类接口Mapper配置文件子查询方法按结果集查询架构 这里从学生的角度来说就是多对一的场景 那么在Java中是怎么样的呢? 环境搭建 数据库 CREATE...
    99+
    2022-11-13
  • 怎么在mybatis中实现多对一关联查询
    怎么在mybatis中实现多对一关联查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。第一种关联方式1.修改实体类Student,追加关联属性,用于封装关联的数据修改完以后...
    99+
    2023-06-15
  • 在MyBatis中实现一对多查询和多对一查询的方式详解(各两种方式)
    目录1、多对一1、1环境搭建1、2编写实体类、1、3编写接口方法1、4编写Mapper1、5实现1、6运行结果2、一对多2、1环境搭建和一对多一样2、2编写实体类2、3编写接口的方法...
    99+
    2022-11-13
  • Mybatis使用@one和@Many实现一对一及一对多关联查询
    目录一、准备工作1.创建springboot项目,项目结构如下2.添加pom.xml配置信息3.配置相关信息二、使用@One注解实现一对一关联查询三、使用@Many注解实现一对多关联...
    99+
    2022-11-12
  • mybatis一对多数据怎么查询封装
    在MyBatis中,可以使用嵌套查询或者嵌套结果映射来实现一对多数据的查询和封装。 嵌套查询:可以使用MyBatis的associ...
    99+
    2023-10-27
    mybatis
  • MySQL一对多查询
    一、MySQL一对多查询最新数据 当我们需要查询多张表之间的数据关系时,MySQL中的一对多查询就是非常关键的一种操作方式。下面,我们以查询最新数据为例子来介绍MySQL一对多查询。 SELEC...
    99+
    2023-08-31
    mysql 数据库
  • 使用Mybatis 如何实现多对一或一对多的关联查询
    使用Mybatis 如何实现多对一或一对多的关联查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先  数据库量表之间字段关系(没有主外键)studentmaj...
    99+
    2023-05-31
    mybatis 一对多 多对一
  • mybatis通过中间表实现一对多查询功能
    需求: 通过一个学生的id查询出该学生所学的所有科目。 使用到的表格: 1.student:学生表 2.subject:科目表 3.stu_sub:学生-科目表(这里的成绩字段没...
    99+
    2022-11-12
  • 利用mybatis如何实现一个一对多查询功能
    利用mybatis如何实现一个一对多查询功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.需求分析:在开发中会遇到这样一个问题,查询订单信息,级联查询出用户信息和订单明...
    99+
    2023-05-31
    mybatis 一对多查询
  • MySQL如何实现一对多查询
    这篇文章给大家分享的是有关MySQL如何实现一对多查询的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。这次要实现的是一对多查询,使用 MySQL 的 group_concat 函数...
    99+
    2022-10-18
  • Mybatis实现一对一、一对多关联查询的方法(示例详解)
    Mybatis实现一对一、一对多关联查询,关联查询:多个表联合查询,只查询一次,通过resultMap里面的<association>、<collection>...
    99+
    2023-05-14
    Mybatis关联查询 Mybatis一对一 Mybatis一对多关联查询
  • Mybatis对sql表的一对多查询问题怎么解决
    这篇“Mybatis对sql表的一对多查询问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mybatis对sql表...
    99+
    2023-07-02
  • 解析Mybatis对sql表的一对多查询问题
    Mybatisd对sql表的一对多查询 select * from projectrecord pr left join projects po on po.pid=p...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作