MyBatis一对多和多对多xml配置

MyBatis一对多和多对多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">
<mapper namespace="com.ktcx.models.business.busfreighttemplate.dao.BusFreightTemplateDao">

    <sql id="BaseColumn">
        id,
        partner_id,
        create_by,
        create_date,
        code,
        is_del,
        end_update_date,
        name,
        type,
        area,
        is_default
    </sql>

    <resultMap id="myResultMap"
               type="com.ktcx.models.business.busfreighttemplate.model.BusFreightTemplate">
        <id property="id" column="id"></id>

        <result property="partnerId" column="partnerId"/>
        <result property="code" column="code"/>
        <result property="partnerId" column="partnerId"/>
        <result property="endUpdateDate" column="endUpdateDate"/>
        <result property="name" column="name"/>
        <result property="type" column="type"/>
        <result property="area" column="area"/>
        <result property="isDefault" column="isDefault"/>

        <collection property="freightProvices"
                    ofType="com.ktcx.models.bq.freightprovice.model.FreightProvice">
            <id column="fpId" property="id"/>

            <result property="proviceText" column="fpProviceText"/>
            <result property="code" column="fpCode"/>
            <result property="increaseFee" column="fpIncreaseFee"/>
            <result property="increaseNum" column="fpIncreaseNum"/>
            <result property="startFee" column="fpStartFee"/>
            <result property="startNum" column="fpStartNum"/>
            <result property="proviceName" column="fpProviceName"/>
            <result property="proviceId" column="fpProviceId"/>
            <result property="shopId" column="fpShopId"/>
            <result property="templateId" column="fpTemplateId"/>
        </collection>

    </resultMap>

    <!--一对多的查询-->
    <select id="selectTemplateAndFreight" resultMap="myResultMap">
    SELECT
        ft.id,
        ft.partner_id AS partnerId,
        ft.code ,
        ft.end_update_date AS  endUpdateDate,
        ft.name ,
        ft.type ,
        ft.area ,
        ft.is_default AS  isDefault,
        fp.id fpId,
        fp.shop_id AS fpShopId  ,
        fp.provice_id AS fpProviceId ,
        fp.provice_name AS fpProviceName ,
        fp.start_num  AS fpStartNum ,
        fp.start_fee  AS fpStartFee ,
        fp.increase_num AS fpIncreaseNum ,
        fp.increase_fee AS fpIncreaseFee ,
        fp.code AS fpCode ,
        fp.provice_text AS  fpProviceText ,
        fp.template_id AS fpTemplateId
    FROM
     (
       SELECT
        f.id,
        f.partner_id ,
        f.code ,
        f.end_update_date  ,
        f.name ,
        f.type ,
        f.area ,
        f.is_default ,
        f.is_del,
        f.create_date
        FROM
        bus_freight_template f
        LEFT JOIN bus_freight_provice p
        ON f.id = p.template_id
        WHERE f.code = p.code
        AND f.code = #{code}
        GROUP BY f.id
        LIMIT #{startPage},#{pageSize}

     ) ft

      LEFT JOIN bus_freight_provice fp
        ON ft.id = fp.template_id
    WHERE ft.code = fp.code
      AND fp.template_id IS NOT NULL
      AND ft.code =  #{code}
      AND fp.is_del = '0'
      AND ft.is_del = '0'

      order by ft.create_date desc
    </select>

    <select id="getALLTemplate" resultType="int">
        SELECT COUNT(0) FROM bus_freight_template WHERE is_del = '0' AND CODE= #{code}
    </select>

    <insert id="saveData">
        insert into bus_freight_template(
        <include refid="BaseColumn"/>
        )
        VALUES
        (
        #{id},
        #{partnerId},
        #{createBy},
        #{createDate},
        #{code},
        #{isDel},
        #{endUpdateDate},
        #{name},
        #{type},
        #{area},
        #{isDefault}
        )

    </insert>

</mapper>

原文地址:https://www.cnblogs.com/upuptop/p/11154637.html

时间: 2024-10-09 12:11:47

MyBatis一对多和多对多xml配置的相关文章

MyBatis一对多,多对一,多对多

MyBatis中的一对多和对多一,多对多 主要就是resultMap中 association – 一个复杂的类型关联;许多结果将包成这种类型(一对多) collection – 复杂类型的集合(多对一) 这2个属性的使用,而一对多和多对一都是相互的,只是站的角度不同. 实例: 这个实例只说这2个属性的使用方法,具体的配置和运行结果在SSM环境搭建文章中写出. 1.首先是数据库,沿用之前员工管理系统的数据库设计点击这里,上面是之前写过的一篇数据库设计,包含sql语句. 2.实体类: 我这里只列要

MyBatis——一对多、多对一

遇见你之前心猿意马.可遇见你之后,猿跳走了,马飞奔而去,只剩心意,全然为你. 1.多对一处理 多对一: 多个学生,对应一个老师 对于学生这边而言,关联,多个学生,关联一个老师[多对一] 对于老师而言,集合,一个老师有很多学生[一对多] SQL: CREATE TABLE `teacher`( `id` int(10) Not null, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`) )ENGINE=INNODB DEFAULT CHARS

MyBatis 之 使用三 (SqlMapConfig.xml 配置)

下面介绍 MyBatis 的核心配置文件 SqlMapConfig.xml 的配置实用: SqlMapConfig.xml 中配置的内容和顺序如下: properties(属性).settings(配置).typeAliases(类型别名).typeHandlers(类型处理器).                         objectFactory(对象工厂).plugins(插件). environments(环境集合属性对象) environment(环境子属性对象) transac

Hibernate系列学习之(二) 多对一、一对一、一对多、多对多的配置方法

这是近期做案件录入.java项目中体会的几点:项目理解很是深刻,和大家共勉! hihernate一对多关联映射(单向Classes----->Student) 一对多关联映射利用了多对一关联映射原理 多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一 一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多 也就是说一对多和多对一的映射策略是一样的,只是站的角度不同 在一一端维护关系的缺点: * 如果将t_student表里的classesid字段设置为

Mybatis 中一对多,多对一的配置

现在有很多电商平台,就拿这个来说吧.顾客跟订单的关系,一个顾客可以有多张订单,但是一个订单只能对应一个顾客. 一对多的顾客 <?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&quo

mybatis 一对多和多对一

在学习MyBatis3的过程中,文档上面一直在强调一个id的东西!在做这个实验的时候,也因为没有理解清楚id含义而导致一对多的"多"中也只有一条数据.id和result的唯一不同是id表示的结果将是当比较对象实例时用到的标识属性.这帮助来改进整体表现,特别是缓存和嵌入结果映射.所以不同数据的id应该唯一区别,不然导致数据结果集只有一条数据. 一.表 二.实体 1.person [java] view plain copy package com.kerwin.mybatis.pojo;

MyBatis之resultMap的作用和xml配置折腾

简单的搭建. MyBatis实战--前身iBatis.基础环境搭建和如何"钓鱼" 这篇写了基础的环境搭建和代码操作. 我这里是使用了xml加interface结合的方法进行操作.现有Employee类.如果是简单的select,可以看看下面简单的例子. Employee.java public class Employee {//省略get set 方法 private int id; private String first_name; private String last_nam

mybatis 一对多和多对一关联查询

首先  数据库量表之间字段关系(没有主外键) studentmajor表的id字段对应student表里major字段 两个实体类 package com.model; import java.util.Date; public class Student { private Integer sno; private String sname; private String ssex; private Integer sclass; private StudentMajor studentmaj

Mybatis一对多,多对一中主子表字段名一致产生的问题及解决方案

数据库两张表的字段名都和两个类的属性名称一样,这时在关联查询出现一个问题. 学生类: package com.pojo; public class Student { private int id; private String name; private int age; private ClassInfo classInfo; public Student() { } public Student(String name, int age) { super(); this.name = na