SSM框架之---Mybatis框架(一对多 的多表查询)入门案例---xml配置

一对多表关系展示
在这里插入图片描述
一对多和多对一的代码相差不远,就是在dao层接口上的代码有一点点差别
一对多dao层接口

package com.one2more.dao;


import com.one2more.domain.Userss;

import java.util.List;

public interface IUserDAO {
    public List<Userss> findByOne2More();
}

而多对一dao层接口代码如下

package com.more2one.dao;


import com.more2one.domain.Accounts;

import java.util.List;

public interface IUserDAO {
    public List<Accounts> findByMore2One();
}

在这里不多过多的展示
之后读者可以在往回看一对多的入门案例,做对比

实体类
user

package com.one2more.domain;

import java.io.Serializable;
import java.util.List;

public class Userss implements Serializable {
    private int id;
    private String name;
    private String pwd;
    private List<Account> accountList;

    public List<Account> getAccountList() {
        return accountList;
    }

    public void setAccountList(List<Account> accountList) {
        this.accountList = accountList;
    }

    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;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "Userss{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                ", accountList=" + (accountList!=null?accountList.toString():null) +
                '}';
    }
}

account

package com.one2more.domain;

import java.io.Serializable;

public class Account implements Serializable {
    private int id;
    private int uid;
    private double money;

    public int getId() {
        return id;
    }

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

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", uid=" + uid +
                ", money=" + money +
                '}';
    }
}

主配置

<?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>
        <package name="com.one2more.dao"></package>
        <package name="com.one2more.domain"></package>
    </typeAliases>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}"></property>
                <property name="url" value="${db.url}"></property>
                <property name="username" value="${db.username}"></property>
                <property name="password" value="${db.password}"></property>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <package name="com.one2more.dao"></package>
    </mappers>
</configuration>

映射配置

<?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.one2more.dao.IUserDAO">
    <resultMap id="usermap" type="Userss">
        <id column="id" property="id"></id>
        <result property="name" column="name"></result>
        <result property="pwd" column="pwd"></result>
        <collection property="accountList" ofType="Account">
            <id property="id" column="aid"></id>
            <result property="uid" column="uid"></result>
            <result property="money" column="money"></result>
        </collection>
    </resultMap>
    <select id="findByOne2More" resultMap="usermap">
      select user.*,a.id aid,a.uid,a.money from user left join account a on user.id = a.uid
    </select>
</mapper>

测试类

import com.one2more.dao.IUserDAO;
import com.one2more.domain.Userss;
import com.one2more.utils.MySqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class One2MoreTest {
    @Test
    public void test(){
        SqlSession sqlSession = MySqlSessionUtil.getSqlSession();
        IUserDAO mapper = sqlSession.getMapper(IUserDAO.class);
        List<Userss> byMore2One = mapper.findByOne2More();
        for (Userss userss : byMore2One) {
            System.out.println(userss);
        }
    }
}

测试展示
在这里插入图片描述

代码链接

百度网盘链接
链接:https://pan.baidu.com/s/1jyjU2NsObd1QmXFXMQB6sw
提取码:33n7
git链接
https://github.com/cxpcxpcxp/csdn_case_mybatis

猜你喜欢

转载自blog.csdn.net/qq_41518597/article/details/102819721