SSM框架之---Mybatis框架(多對一 的多表查詢)入門案例---xml配置

表關係圖解
在這裏插入圖片描述

需要創建兩個實體表 與數據庫的兩張表相對應
然後把相關的配置文件配置好
在進行相關的操作

兩張實體表
account表

package com.more2one.domain;

import java.io.Serializable;

public class Accounts implements Serializable {
    private int id;
    private int uid;
    private double money;
    private Usersss usersss;

    public Usersss getUsersss() {
        return usersss;
    }

    public void setUsersss(Usersss usersss) {
        this.usersss = usersss;
    }

    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 "Accounts{" +
                "id=" + id +
                ", uid=" + uid +
                ", money=" + money +
                ", usersss=" + ((usersss!=null)?usersss.toString():null) +
                '}';
    }
}

user表

package com.more2one.domain;

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

public class Usersss implements Serializable {
    private int id;
    private String pwd;
    private String name;


    public int getId() {
        return id;
    }

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

    public String getPwd() {
        return pwd;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Usersss{" +
                "id=" + id +
                ", pwd='" + pwd + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

獲取數據庫連接的工具類

package com.more2one.utils;

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 java.io.IOException;

public class MySqlSessionUtil {
  private static SqlSessionFactory sqlSessionFactory;
  static {
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
      try {
          sqlSessionFactory = builder.build(Resources.getResourceAsStream("sqlMapperConfig.xml"));
      } catch (IOException e) {
          e.printStackTrace();
      }
  }
  public static SqlSession getSqlSession(){
      return sqlSessionFactory.openSession();
  }
}

主配置文件

<?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.more2one.dao"></package>
        <package name="com.more2one.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.more2one.dao"></package>
    </mappers>
</configuration>

jdbc.properties
在這裏插入圖片描述

映射配置文件

<?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.more2one.dao.IUserDAO">
    <resultMap id="accountMap" type="Accounts">
        <id property="id" column="id"></id>
        <result property="uid" column="uid"></result>
        <result property="money" column="money"></result>
        <association property="usersss" javaType="Usersss">
            <id property="id" column="uuid"></id>
            <!--這個地方在查詢的時候出現了bug,原因是數據庫名稱不正確-->
            <result property="pwd" column="pwd"></result>
            <result property="name" column="name"></result>
        </association>
    </resultMap>
    <select id="findByMore2One" resultMap="accountMap">
      select account.*,u.id uuid,u.pwd,u.name from account left join user u on account.uid = u.id
    </select>
</mapper>

dao接口編寫

package com.more2one.dao;


import com.more2one.domain.Accounts;

import java.util.List;

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

測試類

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

import java.util.List;

public class More2OneTest {
    @Test
    public void test(){
        SqlSession sqlSession = MySqlSessionUtil.getSqlSession();
        IUserDAO mapper = sqlSession.getMapper(IUserDAO.class);
        List<Accounts> byMore2One = mapper.findByMore2One();
        for (Accounts accounts : byMore2One) {
            System.out.println(accounts);
        }
    }
}

測試結果
在這裏插入圖片描述

代碼連接

百度網盤
鏈接:https://pan.baidu.com/s/1X0tkuq2aXpERIfWRI02hYA
提取碼:28u2

git鏈接
https://github.com/cxpcxpcxp/csdn_case_mybatis

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章