Mybatis多对多转化为一对多查询,简单易学(SSM框架)

<?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">

//命名空间为dao的路径

<mapper namespace="com.sp.dao.GoodsDao">


  <resultMap type="Goods" id=" goodsmap">
      <id property="id" column="id" />
          <!--  property="实体类属性" column="数据库字段名"  -->
          <association property="seller" column="sellerid" javaType="Seller" select=" getseller">
              <id property="id" column="id"/>
          </association>
       <collection property="gtype"  column="id" ofType="Gtype" select=" getgtype"><!-- column="id" 对应下面 goodsid=#{id}中的id 值为商品表的id-->
               <id property="id" column="id"/>
       </collection>

  </resultMap>


  <select id=" getseller" resultType="Seller">
     select * from seller where id=#{id}

 </select>

//把多对多转化为一对多(增加一个中间表,详细见下图),根据子查询得到gtype表数据,对应上面select="getgtype"

  <select id=" getgtype" resultType="Gtype">
     select * from gtype where id in (select typeid from goodstype where goodsid =#{id} )

 </select>

//返回类型须写成goodsmap,这样就会自动调用goodsmap中的查询,把查询到的gtype,seller自动放到实体类中

 <select id="getAll" resultMap=" goodsmap">
     select * from goods
 </select>

</mapper>

!------------------------------------------------------------------------------------------------------------------------------------------------------!

实体类Goods,其他两个没啥特别的就不给大家贴了,主要就是定义一个List<Gtype> gtype;

public class Goods {
    Integer id;
    String name;
    String pic;
    Seller seller;
    double price;
    double wprice;//折扣价
    String remark;//备注
    State state;
    Timestamp addtime;
    Integer sort;
    List<Gtype> gtype;
    
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPic() {
        return pic;
    }
    public void setPic(String pic) {
        this.pic = pic;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public double getWprice() {
        return wprice;
    }
    public void setWprice(double wprice) {
        this.wprice = wprice;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public Timestamp getAddtime() {
        return addtime;
    }
    public void setAddtime(Timestamp addtime) {
        this.addtime = addtime;
    }
    
    public Seller getSeller() {
        return seller;
    }
    public void setSeller(Seller seller) {
        this.seller = seller;
    }

    public State getState() {
        return state;
    }
    public void setState(State state) {
        this.state = state;
    }
    public List<Gtype> getGtype() {
        return gtype;
    }
    public void setGtype(List<Gtype> gtype) {
        this.gtype = gtype;
    }
}


猜你喜欢

转载自blog.csdn.net/m0_37679452/article/details/77977338