您的位置:首页 > 其它

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

2017-09-14 10:29 453 查看
<?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;

    }

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: