java mybatis框架实现多表关系查询功能

 更新时间:2021年10月14日 16:57:11   作者:Mvct  
这篇文章主要介绍了java mybatis框架实现多表关系查询,基于Maven框架的整体设计 —— 一多一的关系,文中通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

基于Maven框架的整体设计 —— 一多一的关系

思路:导入mybatis、mysql、Junit4.13依赖;

编写两个java实体类;

编写sqMapConfig.xml mybatis核心配置文件

编写dao层接口;

编写mapper 映射文件;

编写测试类。

1.导入相关依赖

<!--配置依赖-->
<dependencies>
    <!--配置mybatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>

    <!--配合mysql-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>

    <!--配置单元测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
    </dependency>
</dependencies>

2.编写两个java实体类;

Students

package com.mybatis.pojo;


public class Students {

    private Integer sid;
    private String sName;
    private Integer sCid;
    private Cards cards;   //  一多一的关系


    public Integer getSid() {
        return sid;
    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public String getsName() {
        return sName;
    }

    public void setsName(String sName) {
        this.sName = sName;
    }

    public Integer getsCid() {
        return sCid;
    }

    public void setsCid(Integer sCid) {
        this.sCid = sCid;
    }

    public Cards getCards() {
        return cards;
    }

    public void setCards(Cards cards) {
        this.cards = cards;
    }

    @Override
    public String toString() {
        return "Students{" +
                "sid=" + sid +
                ", sName='" + sName + '\'' +
                ", sCid=" + sCid +
                ", cards=" + cards +
                '}';
    }
}

Cards

package com.mybatis.pojo;

public class Cards {

    private Integer cid;
    private String cnum;

    public Integer getCid() {
        return cid;
    }

    public void setCid(Integer cid) {
        this.cid = cid;
    }

    public String getCnum() {
        return cnum;
    }

    public void setCnum(String cnum) {
        this.cnum = cnum;
    }

    @Override
    public String toString() {
        return "Cards{" +
                "cid=" + cid +
                ", cnum='" + cnum + '\'' +
                '}';
    }
}

3.编写sqMapConfig.xml mybatis核心配置文件

<?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文件
    -->
    <properties resource="jdbc.properties"></properties>

    <!--配置实体类相对路径 别名-->
    <typeAliases>
        <typeAlias type="com.mybatis.pojo.Students" alias="Stu"></typeAlias>
        <typeAlias type="com.mybatis.pojo.Cards" alias="Car"></typeAlias>
    </typeAliases>

    <!--配置mybatis环境-->
    <environments default="mybatis">
        <environment id="mybatis">
            <transactionManager type="jdbc"></transactionManager>
            <dataSource type="pooled">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}"></property>
                <property name="password" value="${jdbc.password}"></property>
            </dataSource>
        </environment>
    </environments>

    <!--
    配置mapper.xml映射文件
    resource:相对路径
    -->
    <mappers>
        <mapper resource="com.mybatis.dao/studentsDao.xml"></mapper>
        <mapper resource="com.mybatis.dao/CardsDao.xml"></mapper>
        <!--<package name="com.mybatis.dao"></package>-->
    </mappers>
</configuration>

4.编写dao层接口;

package com.mybatis.dao;

import com.mybatis.pojo.Students;

import java.util.List;

public interface StudentsDao {

    // 查询学生信息以及对应的身份证信息
    public List<Students> findAll();
}

还有一个略了;

5.编写mapper 映射文件;

StudentsDao.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 namespace="com.mybatis.dao.StudentsDao">

    <!--
    配置实体类字段与数据库字段一致
    -->
    <resultMap id="stuMap" type="Stu">
        <id property="sid" column="sid"></id>
        <result property="sName" column="sname"></result>
        <result property="sCid" column="scid"></result>
        <association property="cards" resultMap="com.mybatis.dao.CardsDao.cardsMap"></association>
    </resultMap>

    <!--
    查询学生信息以及对应的身份证信息
    resultMap:实体类与数据库映射的数据类型
    -->
    <select id="findAll" resultMap="stuMap">
        select s.sname,c.cnum from students s,cards c where s.scid=c.cid;
    </select>
</mapper>

CardsDao.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 namespace="com.mybatis.dao.CardsDao">
    <!--配置实体类字段与数据库一致-->
    <resultMap id="cardsMap" type="car">
        <!--
        property:实体字段
        column:数据库字段
        -->
        <id property="cid" column="cid"></id>
        <result property="cnum" column="cnum"></result>
    </resultMap>
</mapper>

6.编写测试类

import com.mybatis.dao.StudentsDao;
import com.mybatis.pojo.Students;
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 TestMybatis {

    InputStream resource;
    SqlSession session;
    StudentsDao stuDao;
    @Before  // 在test方法之前执行
    public void init() throws IOException {

        // 加载核心配置文件
        resource = Resources.getResourceAsStream("sqMapConfig.xml");
        // 创建sqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        // 创建sqlSessionFactory对象
        SqlSessionFactory build = builder.build(resource);
        // 创建Session对象
        session = build.openSession();
        // 执行方法
        stuDao = session.getMapper(StudentsDao.class);

    }
    @After // 在test方法之后执行
    public void close() throws IOException {
        // 关闭资源
        session.close();
        resource.close();
    }

    @Test
    public void test01(){
        List<Students> list = stuDao.findAll();
        for (Students students : list) {
            System.out.println(students);
        }

    }
}

到此这篇关于java mybatis框架实现多表关系查询的文章就介绍到这了,更多相关java mybatis多表关系查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈HBase在SpringBoot项目里的应用(含HBaseUtil工具类)

    浅谈HBase在SpringBoot项目里的应用(含HBaseUtil工具类)

    这篇文章主要介绍了浅谈HBase在SpringBoot项目里的应用(含HBaseUtil工具类),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java spring单点登录系统

    Java spring单点登录系统

    这篇文章主要介绍了Java spring单点登录系统,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java字段初始化的规律解析

    Java字段初始化的规律解析

    这篇文章主要介绍了Java字段初始化的规律解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java设计模式中责任链模式详解

    Java设计模式中责任链模式详解

    责任链模式是将链中的每一个节点看做是一个对象,每个节点处理的请求均不相同,且内部自动维护下一个节点对象,当一个请求从链式的首段发出时,会沿着链的路径依次传递给每一个节点对象。本文将通过示例和大家详细聊聊责任链模式,需要的可以参考一下
    2022-11-11
  • C# TreeNode案例详解

    C# TreeNode案例详解

    这篇文章主要介绍了C# TreeNode案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • 解决eclipse上传svn忽略target文件夹的坑

    解决eclipse上传svn忽略target文件夹的坑

    这篇文章主要介绍了解决eclipse上传svn忽略target文件夹的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • maven setting.xml文件配置禅定之旅

    maven setting.xml文件配置禅定之旅

    这篇文章主要为大家介绍了maven setting.xml文件禅定之旅,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Hibernate延迟加载原理与实现方法

    Hibernate延迟加载原理与实现方法

    这篇文章主要介绍了Hibernate延迟加载原理与实现方法,较为详细的分析了Hibernate延迟加载的概念,原理与相关实现技巧,需要的朋友可以参考下
    2016-03-03
  • MyBatis自定义类型转换器实现加解密

    MyBatis自定义类型转换器实现加解密

    这篇文章主要介绍了MyBatis自定义类型转换器实现加解密的相关资料,需要的朋友可以参考下
    2016-07-07
  • Java设计模式之适配器模式的示例详解

    Java设计模式之适配器模式的示例详解

    适配器模式,即将某个类的接口转换成客户端期望的另一个接口的表示,主要目的是实现兼容性,让原本因为接口不匹配,没办法一起工作的两个类,可以协同工作。本文将通过示例详细介绍适配器模式,需要的可以参考一下
    2022-02-02

最新评论