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

首先做好環境搭建等準備工作
這裏不一一展示
只做代碼演示
在這裏插入圖片描述

sql腳本(裏面包含一對多和多對多的數據庫表)

create table role
(
  id       int auto_increment
    primary key,
  rolename varchar(255) null
);

create table user
(
  id   int auto_increment
    primary key,
  name varchar(255) null,
  pwd  varchar(255) null
);

create table account
(
  id    int auto_increment
    primary key,
  uid   int    null,
  money double null,
  constraint account_user_id_fk
  foreign key (uid) references user (id)
);

create table card
(
  id      int auto_increment
    primary key,
  uid     int        null,
  cardnum mediumtext null,
  constraint card_uid_uindex
  unique (uid),
  constraint card_user_id_fk
  foreign key (uid) references user (id)
);

create table roletouser
(
  id  int auto_increment
    primary key,
  uid int null,
  rid int null,
  constraint roletouser_role_id_fk
  foreign key (rid) references role (id),
  constraint roletouser_user_id_fk
  foreign key (uid) references user (id)
);


1、jdbc.properties配置

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/csdn
db.username=root
db.password=771003

2、主配置

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

3、映射配置

<?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.one2one.dao.IUserDAO">
    <resultMap id="userMap" type="Users">
        <id property="id" column="id"></id>
        <result property="name" column="name"></result>
        <result property="pwd" column="pwd"></result>
        <association property="card" column="card" javaType="Card">
            <id column="cid" property="id"></id>
            <result column="uid" property="uid"></result>
            <result column="cardnum" property="cardnum"></result>
        </association>
    </resultMap>
    <select id="findByOne2One" resultMap="userMap">
      select user.* ,c.id cid,c.uid,c.cardnum from user LEFT JOIN card c on user.id = c.uid
    </select>
</mapper>

4、sqlsession配置

package com.one2one.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();
  }
}

5、User實體類

package com.one2one.domain;

import java.io.Serializable;

public class Users implements Serializable {
    private int id;
    private String name;
    private String pwd;
    private Card card;

    public Card getCard() {
        return card;
    }

    public void setCard(Card card) {
        this.card = card;
    }

    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 "Users{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                ", card=" + (card!=null?card.toString():null) +
                '}';
    }
}

6、Card實體類

package com.one2one.domain;

import java.io.Serializable;

public class Card implements Serializable {
    private int id;
    private int uid;
    private long cardnum;

    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 long getCardnum() {
        return cardnum;
    }

    public void setCardnum(long cardnum) {
        this.cardnum = cardnum;
    }

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

7、DAO接口

package com.one2one.dao;

import com.one2one.domain.Users;

import java.util.List;

public interface IUserDAO {
    public List<Users> findByOne2One();
}

運行結果
在這裏插入圖片描述

代碼鏈接
鏈接:https://pan.baidu.com/s/1er_7kmOmP9MVgwTKIF9y6Q
提取碼:c74q

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