我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mybatis对sql表的一对多查询问题怎么解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mybatis对sql表的一对多查询问题怎么解决

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

Mybatisd对sql表的一对多查询

Mybatis对sql表的一对多查询问题怎么解决

select * fromprojectrecord prleft join projects poon po.pid=pr.pidleft join emp eon e.empno = pr.empnowhere pr.pid=1

Mybatis对sql表的一对多查询问题怎么解决

<?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"><mapper namespace="com.msb.mapper.EmpMapper">    <!--resultMap是一个映射表,对应的字段会对应数据表的字段    -->    <resultMap id="projectMap" type="projects">        <id column="pid" property="pid"></id>        <result column="pname" property="pname"></result>        <result column="money" property="money"></result>        <collection property="projectrecordList" ofType="projectrecord">            <id property="pid" column="pid"></id>            <id property="empno" column="empno"></id>            <association property="emp" javaType="emp">                <id property="empno" column="empno"></id>                <result property="ename" column="ename"></result>                <result property="job" column="job"></result>                <result property="sal" column="sal"></result>                <result property="hiredate" column="hiredate"></result>                <result property="mgr" column="mgr"></result>                <result property="comm" column="comm"></result>                <result property="deptno" column="deptno"></result>            </association>        </collection>    </resultMap>    <!--Projects findPiddle(int pid);-->    <select id="findPiddle" resultMap="projectMap">        select *from            emp e                inner join            projectrecord pr            on pr.empno=e.empno                inner join            projects po            on po.pid= pr.pid        where pr.pid=#{pid}    </select></mapper>
//mapper表package com.msb.mapper;import com.msb.pojo.Dept;import com.msb.pojo.Emp;import com.msb.pojo.Projects;import java.util.List;public interface EmpMapper {        Projects findPiddle(int pid);}
package com.msb.pojo;//一对一关系引入import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;@Data@AllArgsConstructor@NoArgsConstructorpublic class Projectrecord implements Serializable {    private int empno;    private int pid;    //pr和e是一对一的关系    private Emp emp;}
package com.msb.pojo;//一对多关系实体类设计import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;import java.util.List;@NoArgsConstructor@AllArgsConstructor@Datapublic class Projects implements Serializable {    private int pid;    private String pname;    private int money;    //po和pr是一对多的关系    List<Projectrecord> projectrecordList;}
package com.msb.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.sql.Date;@Data@AllArgsConstructor@NoArgsConstructorpublic class Emp {    private Integer empno;    private String ename;    private String job;    private Integer mgr;    private Date hiredate;    private  Integer sal;    private Integer comm;    private  Integer deptno;    private Dept dept;}
jdbc_driver=com.mysql.cj.jdbc.Driverjdbc_url=jdbc:mysql://127.0.0.1:3306/testtable?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaijdbc_username=rootjdbc_password=root
log4j.rootLogger=debug,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.SimpleLayoutlog4j.appender.logfile=org.apache.log4j.FileAppenderlog4j.appender.logfile.File=d:/msb.loglog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n
<?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>    <!--引入外部配置文件-->    <properties resource="jdbc.properties"></properties>    <!--这里是起的别名,前面是名,后面是路径-->    <!--<typeAliases>        <typeAlias alias="dept" type="com.msb.pojo.Dept"/>    </typeAliases>-->    <!--包别名,用到时候调用名字小写即可,就会扫描msb下的所以实体类,用的时候实体类名小写-->    <typeAliases>        <package name="com.msb"/>    </typeAliases>    <environments default="development">        <environment id="development">            <!--   简单使用了 JDBC 的提交和回滚设置  -->            <transactionManager type="JDBC"/>            <dataSource type="POOLED">                <property name="driver" value="${jdbc_driver}"/>                <property name="url" value="${jdbc_url}"/>                <property name="username" value="${jdbc_username}"/>                <property name="password" value="${jdbc_password}"/>            </dataSource>        </environment>    </environments>    <!--加载mapper映射文件-->    <mappers>        <package name="com.msb.mapper"/>    </mappers></configuration>
import com.msb.mapper.EmpMapper;import com.msb.pojo.Dept;import com.msb.pojo.Emp;import com.msb.pojo.Projectrecord;import com.msb.pojo.Projects;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.util.List;public class Test1 {    SqlSession sqlSession = null;    EmpMapper mapper =null;   @Before   public void test1(){       //首先做一个对象SqlSessionFactoryBuilder建立一个绘话       SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();       //有一个文本输入的io流进行读取操作       InputStream stream = null;       try {           //这里的路径直接会定位到配置文件classes下面;所以这个文件在次目录下--编译和           //-图纸;对数据库文件进行读取,获取一个io流,由于配置文件在classes下面,直接写文件名即可           stream = Resources.getResourceAsStream("sqlMapConfig.xml");       } catch (IOException e) {           e.printStackTrace();       }       //build需要指向一个文件进行读取出来--工厂       SqlSessionFactory factory = ssfb.build(stream);        //需要用sqlSession去调用增删改查--工人去获取数据,打开这个绘话       sqlSession = factory.openSession();   }            @Test    public void test7(){        mapper = sqlSession.getMapper(EmpMapper.class);        Projects piddle = mapper.findPiddle(1);        System.out.println("Pid");        System.out.println(piddle.getPid());        System.out.println("Pname");        System.out.println(piddle.getPname());        System.out.println("Money");        System.out.println(piddle.getMoney());        System.out.println("ProjectrecordList");        List<Projectrecord> projectrecordList = piddle.getProjectrecordList();        projectrecordList.forEach(System.out::println);    }        @After    public void test3(){       if (sqlSession!=null){           sqlSession.close();       }    }}

以上就是关于“Mybatis对sql表的一对多查询问题怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mybatis对sql表的一对多查询问题怎么解决

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

下载Word文档

猜你喜欢

Mybatis对sql表的一对多查询问题怎么解决

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

mybatis一对一查询一对多查询遇到的问题怎么解决

这篇文章主要介绍“mybatis一对一查询一对多查询遇到的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mybatis一对一查询一对多查询遇到的问题怎么解决”文章能帮助大家解决问题。实体
2023-06-30

Mybatis怎么解决collection一对多问题

这篇文章主要介绍了Mybatis怎么解决collection一对多问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mybatis怎么解决collection一对多问题文章都会有所收获,下面我们一起来看看吧。先
2023-07-05

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

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

怎么解决mybatis一对多查询resultMap只返回了一条记录问题

本篇内容介绍了“怎么解决mybatis一对多查询resultMap只返回了一条记录问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题描述
2023-06-21

springboot怎样使用mybatis一对多的关联查询问题

今天给大家介绍一下springboot怎样使用mybatis一对多的关联查询问题。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。springboot使用myba
2023-06-29

解决Mybatis-Plus或PageHelper多表分页查询总条数不对问题

Mybatis-Plus版本3.4之后,对分页查询进行了优化 对于单表查询是没有问题的。而需要多表关联查询(自写sql)时,就会查询调用Mybatis-Plus的 .page(E page, Wrapper queryWrapper);
2023-08-21

Mybatis怎么实现一对一、一对多关联查询

今天小编给大家分享一下Mybatis怎么实现一对一、一对多关联查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Mybati
2023-07-05

mybatis一对多嵌套查询怎么实现

本文小编为大家详细介绍“mybatis一对多嵌套查询怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis一对多嵌套查询怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。mybatis一对多嵌
2023-07-05

mybatis一对多数据怎么查询封装

在MyBatis中,可以使用嵌套查询或者嵌套结果映射来实现一对多数据的查询和封装。嵌套查询:可以使用MyBatis的association和collection标签来进行嵌套查询。首先,在mapper文件中定义查询一的一方的SQL语句,使用
2023-10-27

Mybatis一对多查询列表属性处理示例详解

使用MyBatis进行多表联查的关键是构建数据库中表的字段和java中对象的属性的映射关系,下面这篇文章主要给大家介绍了关于Mybatis一对多查询列表属性处理的相关资料,需要的朋友可以参考下
2023-05-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录