1つのマッピング関係MyBatisのにワン

オリジナルリンクします。http://www.yiidian.com/mybatis/one-to-one.html

1対多マッピングの一つは、一から一とは何ですか?

ユーザーおよびオーダー、例えば、

ワン:注文が一つだけのユーザー==>ユーザーの注文が1つの関係であるに属し

多くのユーザが複数の注文を持つことができます==>ユーザーの注文がある対多の関係

注:でMyBatisの、あなたは多くの関係を完了したい場合は、実際には、2対多マッピング!

そして、MyBatisの1つのマッピングの実装を説明するのか。

2テーブル構造を確立

2.1ユーザ・テーブルを作成します。

CREATE TABLE `t_user` (
   `id` int(11) DEFAULT NULL,
   `username` varchar(50) DEFAULT NULL,
   `password` varchar(50) DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

Ordersテーブルの作成2.2

CREATE TABLE `t_order` (
   `id` int(11) DEFAULT NULL,
   `orderno` varchar(100) DEFAULT NULL,
   `amount` double DEFAULT NULL,
   `user_id` int(11) DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

2.3テストデータの挿入

ファイル

ファイル

3 POJOエンティティの設計、ビルドの関係

3.1 Userエンティティクラス

package com.yiidian.domain;

import java.util.List;

/**
 * 用户实体
 * 一点教程网 - www.yiidian.com
 */
public class User {
    private Integer id;
    private String username;
  
    public void setOrders(List<Order> orders) {
        this.orders = orders;
    }

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

3.2受注エンティティクラス

package com.yiidian.domain;

/**
 * 订单实体
 * 一点教程网 - www.yiidian.com
 */
public class Order {
    private Integer id;
    private String orderno;
    private Double amount;
    private User user;

    public Integer getId() {
        return id;
    }

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

    public String getOrderno() {
        return orderno;
    }

    public void setOrderno(String orderno) {
        this.orderno = orderno;
    }

    public Double getAmount() {
        return amount;
    }

    public void setAmount(Double amount) {
        this.amount = amount;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

Orderエンティティクラスは、ユーザーの属性によって、ユーザエンティティとの関係を確立します。これは、ユーザーであることに注意してください。

4書き込みダオ・インタフェース

4.1 UserDaoインタフェース

package com.yiidian.dao;

import com.yiidian.domain.User;

import java.util.List;

/**
 * 用户Dao接口
 * 一点教程网 - www.yiidian.com
 */
public interface UserDao {

}

4.2 OrderDaoインタフェース

package com.yiidian.dao;
import com.yiidian.domain.Order;
import com.yiidian.domain.User;
import java.util.List;

/**
 * 订单Dao接口
 * 一点教程网 - www.yiidian.com
 */
public interface OrderDao {
    /**
     * 查询所有订单
     */
    public List<Order> findAllOrders();
}

5書き込みダオマッピングの設定

5.1 UserDao.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.yiidian.dao.UserDao">

</mapper>

5.2 OrderDao.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.yiidian.dao.OrderDao">

    <!--一对一映射-->
    <resultMap id="OrderResultMap" type="com.yiidian.domain.Order">
        <id property="id" column="oid"/>
        <result property="orderno" column="orderno"/>
        <result property="amount" column="amount"/>
        <!--关联查询订单所属的用户-->
        <association property="user" column="id" javaType="com.yiidian.domain.User">
            <id property="id" column="id"/>
            <result property="username" column="username"/>
            <result property="password" column="password"/>
        </association>
    </resultMap>

    <select id="findAllOrders" resultMap="OrderResultMap">
        SELECT
          o.id oid,
          o.orderno orderno,
          o.amount amount,
          u.*
        FROM t_order o
          LEFT JOIN t_user u
            ON o.user_id = u.id
    </select>
</mapper>
  • 関連:関連マッピングで使用されるもの
  • プロパティ:Orderクラスに対応するユーザ属性
  • コラム:対応する外部キーフィールドの名前
  • JavaType:Userクラスの完全修飾名

6書き込みテストクラス

package com.yiidian.mybatis;

import com.yiidian.dao.OrderDao;
import com.yiidian.domain.Order;
import com.yiidian.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * MyBatis测试类 - 一对一映射
 * 一点教程网 - www.yiidian.com
 */
public class TestOne2One {

    /**
     * 测试一对一映射
     */
    @Test
    public void testOrderDao(){
        //1.获取SqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSession();

        //2.创建Mapper代理对象
        OrderDao orderDao = sqlSession.getMapper(OrderDao.class);

        //3.调用方法
        List<Order> list = orderDao.findAllOrders();
        System.out.println(list);
        //4.关闭连接
        sqlSession.close();
    }

}

7テストクラスを実行します

、デバッグモードにテストケースクラスを起動変数のリストを表示し、Orderオブジェクトの成功に見ることができますが、データのユーザオブジェクトをカプセル化します!

ファイル

ファイル

ソースをダウンロードします。https://pan.baidu.com/s/1jZrfapjqB_VHI_GLgKPo4g

ファイル

私の注意そのパブリック数::チュートリアルにようこそ。排他的な学習リソースを整理し、毎日呉服を押します。
あなたは私のチュートリアルシリーズに興味があるなら、あなたは私のウェブサイトに焦点を当てることができます。yiidian.com

おすすめ

転載: www.cnblogs.com/yiidian/p/12536428.html