20200105 - MyBatis로 다음날

주문 상품 모델 분석

데이터 분석을 위해 모델 사고
1) 데이터의 각 테이블의 내용을 알아보십시오
학습 시스템, 수요 함수의 해당 친숙한 각 테이블의 내용의 처리 서브 모듈을 한
각 테이블 중요한 필드 세트입니다 2)
비어 있지 않은, 외부 키 필드
3) 데이터베이스 레벨 테이블 및 테이블의 외래 키 관계 관계
4) 표와 테이블 사이의 비즈니스 관계
테이블 및 테이블 사이의 비즈니스 관계의 분석은 비즈니스 감각에 기초해야

데이터 모델 분석
사용자 테이블 사용자는 구매 물품에 대한 사용자 정보 기록
ID를 : 자동 증가 기본 키
사용자가 만든 주문의 주문 양식 순서 기록
번호 : 주문 번호
USER_ID를 : 외래 키 사용자 ID
주문 정보는 주문의 세부 기록 orderall
외부의 ORDER_ID을 키 주문 ID는
제품 ID items_id
제품 정보 테이블에 기록 된 상품 항목을

우리는 분석 최대 비즈니스 감각을 기준으로, 테이블과 테이블 사이의 비즈니스 관계를 구축 할 필요가
데이터 테이블 레벨 사이의 비즈니스 관계 사이의 관계를 분석하기

사용자와 주문
사용자는 -> 주문 여러 주문 만들 수있는 사용자
주문 -> 사용자 명령은 사용자가 만들 수 있습니다

주문 및 orderall
주문 -> orderall 주문이 orderall 레코드에 각 항목에 대한 구매 정보를 더 많은 상품을 구입하기 때문에 여러 주문 세부 사항을 포함 할 수 있습니다 위해, 많은

한 주문 세부에만 주문에 포함시킬 수 이상 돌아 가기

orderall -> 상품 주문 정보, 상품에 해당하는 정보 만
항목 -> 제품 주문의 복수를 포함 할 수있다

데이터베이스 수준의 분석에서 테이블 비즈니스 관계 사이에 관계가없는 경우
주문 및 항목 관계는 orderall 추천 할 수있다

하나 개의 쿼리
필요 : 주문 정보를 확인은 주문 정보는 쿼리 생성과 관련된
각각 resultType 구현과 실현 된 resultMap
SQL 문을

Orders 테이블 : 기본 테이블 쿼리를 결정하기 위해
상관 관계 테이블 쿼리를 결정하기 : 사용자 테이블

쿼리와 관련 : 외부 연결 또는 사용 연결
orders 테이블부터하는 외래 키 (USER_ID)가
사용자 쿼리를 사용자 레코드를 조회 할 수있는 외부 키 테이블을 통해이 연결이 제공 될 수있다

SELECT 
  orders.*,
  user.username,
  userss.address
FROM
  orders,
  user 
WHERE orders.user_id = user.id

POJO 만들기
POJO에 SQL 결과 집합 매핑의 상단, POJO는 쿼리의 열 이름을 모두 포함해야

원래 order.java은 새 POJO를 만드는 데 필요한 모든 필드를 매핑하지
상속 쿼리 필드 이상의 클래스를 포함하여 POJO를 만들

package cn.mmz.mybatis.pojo;

/**
 * @Classname 订单的拓展类
 * @Description TODO
 * @Date 2020/1/5 12:13
 * @Created by mmz
 */

//通过此类映射订单和用户查询的结果,让此类继承包括字段较多的pojo类


public class OrderCustom  extends Orders{
    //添加用户属性
}

package cn.mmz.mybatis.pojo;

/**
 * @Classname 订单的拓展类
 * @Description TODO
 * @Date 2020/1/5 12:13
 * @Created by mmz
 */

//通过此类映射订单和用户查询的结果,让此类继承包括字段较多的pojo类


public class OrderCustom  extends Orders{
    //添加用户属性
    private String username;
    private String sex;

    public String getUsername() {
        return username;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    private String address;
}

매핑의 결과 생성 된

서면 mapper.xml

    <select id="findOrderUser" resultType="cn.mmz.mybatis.pojo.OrderCustom">
        SELECT
  orders.*,
  user.username,
  userss.address
FROM
  orders,
  user
WHERE orders.user_id = user.id
    </select>

mapper.java의
인터페이스는 완료 작성할 수 있습니다

public interface OrdersMapperCustom {
    public List<OrderCustom> findOrdersUser() throws Exception;
}

최종 테스트 클래스

    public void testFindOrdersUser() throws  Exception{
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //创建代理对象
        OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom.class);
        //调用Mapper方法
        List<OrderCustom> list =  ordersMapperCustom.findOrdersUser();
        System.out.println(list);
        sqlSession.close();
    }

구현 된 resultMap
resultType와 SQL 문을

아이디어 사용 된 resultMap 매핑
사용 된 resultMap 쿼리 결과는 주문이 객체에 매핑 된
주문에 사용자 속성이 클래스를 추가
사용자 속성에 사용자 정보에 매핑되는 쿼리와 관련된 객체의 질서

주문은 사용자 속성 클래스를 추가해야

그리고 필요가 정의 mapper.xml 된 .java

된 resultMap에 대한 주문 정보와 사용자 정보를 구성하는
고유 둘 이상의 열이 더 언급 아이디 상기 이외 구성해야 식별이있는 경우
식별 컬럼 주문 정보 고유를 : 열
고유 정보에 매핑되는 순서를 식별하는 속성 열 : 속성

<id column="id" property="id"></id>
        <result column="user_id" property="userId"></result>
        <result column="number" property="number"></result>
        <result column="createtime" property="createtime"></result>
        <result column="note" property="note"></result>

이 키워드는 단일 쿼리 객체에 대한 연결 관련 정보를 매핑하는 데 사용됩니다
에서 속성 주문하는에 매핑되는 쿼리와 관련된 사용자 정보 : 속성을
만약 javaType가 자바의 종류에 매핑

열 : 지정 고유 사용자 정보를 식별하는 열

<association property="user" javaType="cn.mmz.mybatis.pojo.User">
            <id column="user_id" javaType="id"></id>
            <result column="username" property="username"></result>
            <result column="sex" property="sex"></result>
            <result column="address" property="address"></result>
        </association>

적인 resultMap 및 resultType
하나 개의 쿼리를 달성 : resultType이 더 간단 달성, POJO를 포함하지 않을 경우 열 이름을 확인하지, 열 이름은 완료하려면 해당 속성 매핑을 증가시킬 필요가
없는 쿼리 결과를이없는 경우 특별한 요구 사항을 resultType 권장
별도 대한적인 resultMap의 필요성을 쿼리 결과의 특별한 요구 사항이있는 경우 정의는, 더 많은 문제 얻을 수 있습니다. 그것은 POJO의의 속성에 매핑 된 resultMap 관련 정보를 사용하여 수행 할 수 있습니다
게으른 로딩이 달성 될 수있다 된 resultMap을하지만, 입력하지

많은 쿼리

확인 주문 및 주문 세부 사항

하는 SQL 문을
메인 쿼리 테이블 주문 테이블을 결정은
협회의 조회 테이블 주문 세부 사항을 결정하는

목록을 기준으로 질의 한 관련 주문을 추가

사용 resultType 쿼리 결과 세트가 POJO의 상단에 매핑, POJO 주문 정보의 최종 목록이 반복됩니다
중복 레코드가 없습니다 주요 질의 주문 매핑 : 요구 사항
orders.java의에서 목록 추가 List<orderDetails> orderDetails속성을
결국 주문 정보에 매핑됩니다 주문 세부 사항에 해당하는 순서대로 주문은 주문 OrderDetails의 속성에 매핑됩니다.
각각의 주문은 속성 List<orderDetails> orderDetails순서 세부 사항에 해당하는 순서대로 저장

mapper.xml

협회는 하나의 기록에 매핑
받는 사람 매핑 컬렉션 집합
POJO에 매핑 세트 지정된 ofType 유형

또한 매핑 주문 정보 및 사용자 정보를 여기에서 구성하지, 상속을 사용할 수 있습니다

<resultMap id="OrdersAndOrderDeResultMap" type="cn.mmz.mybatis.pojo.Orders">
        <id column="id" property="id"></id>
        <result column="user_id" property="userId"></result>
        <result column="number" property="number"></result>
        <result column="createtime" property="createtime"></result>
        <result column="note" property="note"></result>

        <association property="user" javaType="cn.mmz.mybatis.pojo.User">
            <id column="user_id" property="id"></id>
            <result column="username" property="username"></result>
            <result column="sex" property="sex"></result>
            <result column="address" property="address"></result>
        </association>

        <collection property="orderdetails" ofType="cn.mmz.mybatis.pojo.Orderdetail">
            <id column="orderdetail_id" property="id"></id>
            <result column="items_id" property="itemsId"></result>
            <result column="items_num" property="itemsNum"></result>
            <result column="orders_id" property="ordersId"></result>
        </collection>
    </resultMap>

mapper.java

 public List<Orders> findOrdersAndOrderDeResultMap() throws Exception;

 @Test
    public void testfindOrdersAndOrderDeResultMap() throws  Exception{
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //创建代理对象
        OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom.class);
        //调用Mapper方法
        List<Orders> list =  ordersMapperCustom.findOrdersAndOrderDeResultMap();
        System.out.println(list);
        sqlSession.close();
    }

요약
쿼리 세트와 연관된 많은 레코드의 MyBatis로 사용 된 resultMap 수집은 속성 목록에 매핑

사용 resultType은 : 주문 세부 OrderDetails의 매핑 명령에 매핑 목록에 저장된 자신의 치료를 통해 더블 루프, 중복 레코드를 제거를 필요로

게시 된 657 개 원래 기사 · 원 찬양 39 ·은 60000 +를 볼

추천

출처blog.csdn.net/qq_36344771/article/details/103840389