<?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;
}
}