Mybatis, 实现一对多

Mybatis, 实现一对多

 

我这里是拿商品做为例子

不多说直接上代码

 

Mapper.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.nf147.mall.dao.CommodityMapper">
    <resultMap id="BaseResultMap" type="com.nf147.mall.entity.Commodity">
        <id column="product_id" jdbcType="INTEGER" property="productId"/>
        <result column="category_id" jdbcType="INTEGER" property="categoryId"/>
        <result column="product_code" jdbcType="VARCHAR" property="productCode"/>
        <result column="product_name" jdbcType="VARCHAR" property="productName"/>
        <result column="product_content" jdbcType="LONGVARCHAR" property="productContent"/>

     <!--这里还需要标明关系  property属性对应是实体类的字段名-->
        <association property="standard" resultMap="StandardResultMap"></association>
        <association property="dommodityattribute" resultMap="DommodityattributeResultMap"></association>
    </resultMap>
         
    <!--这个是要查询的表1  总之你直接去要查询的表复制就好 -->
<resultMap id="DommodityattributeResultMap" type="com.nf147.mall.entity.Dommodityattribute">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="product_id" jdbcType="INTEGER" property="productId"/>
        <result column="product_simg" jdbcType="VARCHAR" property="productSimg"/>
</resultMap>
        <!--这个是要查询的表2-->
<resultMap id="StandardResultMap" type="com.nf147.mall.entity.Standard">
        <id column="specs_id" jdbcType="INTEGER" property="specsId"/>
        <result column="product_id" jdbcType="INTEGER" property="productId"/>
        <result column="product_specs" jdbcType="VARCHAR" property="productSpecs"/>
        <result column="product_price" jdbcType="DECIMAL" property="productPrice"/>
</resultMap>

 

实体类:

public class Commodity {
    private Integer productId;

    private Integer categoryId;

    private String productCode;

    private String productName;

    private String productContent;

    private Standard standard;      //第一个表的实体类

    private Dommodityattribute dommodityattribute;  //第二个表的实体类  然后再提供 get 和 set 的方法

    public Standard getStandard() {
        return standard;
    }

    public void setStandard(Standard standard) {
        this.standard = standard;
    }

    public Dommodityattribute getDommodityattribute() {
        return dommodityattribute;
    }

    public void setDommodityattribute(Dommodityattribute dommodityattribute) {
        this.dommodityattribute = dommodityattribute;
    }

    public Integer getProductId() {
        return productId;
    }

    public void setProductId(Integer productId) {
        this.productId = productId;
    }

    public Integer getCategoryId() {
        return categoryId;
    }

    public void setCategoryId(Integer categoryId) {
        this.categoryId = categoryId;
    }

    public String getProductCode() {
        return productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode == null ? null : productCode.trim();
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName == null ? null : productName.trim();
    }

    public String getProductContent() {
        return productContent;
    }

    public void setProductContent(String productContent) {
        this.productContent = productContent == null ? null : productContent.trim();
    }
}

希望能帮助大家,谢谢。

 

 
 
 
 
 
 
 
posted @ 2019-01-16 10:10 梓鸿 阅读(...) 评论(...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们有两个表,一个是订单表(order),另一个是订单详情表(order_item),订单表和订单详情表是一对多的关系(即一个订单可以对应多个订单详情),下面是使用MyBatis实现一对多查询的代码示例。 1. 定义Order类和OrderItem类 ```java public class Order { private Integer id; private String orderNo; private List<OrderItem> orderItemList; // 省略getter和setter方法 } public class OrderItem { private Integer id; private Integer orderId; private String productName; private Integer quantity; // 省略getter和setter方法 } ``` 2. 编写OrderMapper.xml文件 ```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.example.dao.OrderMapper"> <!-- 根据订单ID查询订单详情 --> <select id="findOrderDetailsByOrderId" resultMap="orderResultMap"> SELECT o.*, oi.id AS oi_id, oi.product_name, oi.quantity FROM `order` o LEFT JOIN order_item oi ON o.id = oi.order_id WHERE o.id = #{orderId} </select> <resultMap id="orderResultMap" type="com.example.entity.Order"> <!-- 订单信息映射 --> <id property="id" column="id"/> <result property="orderNo" column="order_no"/> <!-- 订单详情映射 --> <collection property="orderItemList" ofType="com.example.entity.OrderItem"> <id property="id" column="oi_id"/> <result property="productName" column="product_name"/> <result property="quantity" column="quantity"/> </collection> </resultMap> </mapper> ``` 3. 编写OrderMapper接口 ```java public interface OrderMapper { List<Order> findOrderDetailsByOrderId(Integer orderId); } ``` 4. 在Spring配置文件中配置OrderMapper ```xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="typeAliasesPackage" value="com.example.entity"/> <property name="mapperLocations"> <array> <value>classpath*:mapper/*.xml</value> </array> </property> </bean> <bean id="orderMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.example.dao.OrderMapper"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> ``` 5. 调用OrderMapper接口方法进行一对多查询 ```java @Autowired private OrderMapper orderMapper; public void testFindOrderDetailsByOrderId() { Integer orderId = 1; List<Order> orderList = orderMapper.findOrderDetailsByOrderId(orderId); for (Order order : orderList) { System.out.println(order.getOrderNo()); List<OrderItem> orderItemList = order.getOrderItemList(); for (OrderItem orderItem : orderItemList) { System.out.println(orderItem.getProductName() + ", " + orderItem.getQuantity()); } } } ``` 通过以上步骤,我们就可以实现使用MyBatis进行一对多查询了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值