<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->
<!-- START SNIPPET: e1 -->
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="Order">

  <!-- Result maps describe the mapping between the columns returned
 from a query, and the class properties.  A result map isn't
 necessary if the columns (or aliases) match to the properties
 exactly. -->
  <resultMap id="OrderResult" type="Order">
    <result property="id" column="ORD_ID"/>
    <result property="item" column="ITEM"/>
    <result property="amount" column="ITEM_COUNT"/>
    <result property="description" column="ITEM_DESC"/>
    <result property="processed" column="ORD_DELETED"/>
  </resultMap>

  <!-- Select with no parameters using the result map for Order class. -->
  <select id="selectOrders" resultMap="OrderResult">
    select * from ORDERS where ORD_DELETED = false order by ORD_ID
  </select>

  <!-- Insert example, using the Order parameter class -->
  <insert id="insertOrder" parameterType="Order">
    insert into ORDERS (
    ORD_ID,
    ITEM,
    ITEM_COUNT,
    ITEM_DESC,
    ORD_DELETED
    )
    values (
    #{id}, #{item}, #{amount}, #{description}, false
    )
  </insert>

  <update id="consumeOrder" parameterType="Order">
    update ORDERS set ORD_DELETED = true where ORD_ID = #{id}
  </update>

</mapper>
<!-- END SNIPPET: e1 -->
