目录
1 第七天:订单管理 2
1.1 查询一个订单 2
1.1.1 改造OrderMapper.xml 2
1.1.2 改造OrderMapper接口 2
1.1.3 改造OrderService接口 2
1.1.4 改造OrderServiceImpl 2
1.1.5 改造OrderController 2
1.2 新增订单 3
1.2.1 改造OrderController 3
1.2.2 orderAdd.jsp 3
1.2.3 修改OrderMapper.xml 5
1.2.4 修改OrderMapper接口 5
1.2.5 修改OrderService接口 5
1.2.6 修改OrderServiceImpl 5
1.2.7 OrderController中添加新增方法 6
1.2.8 注意:日期字段 6
1.3 修改订单 6
1.3.1 OrderController中添加跳转 6
1.3.2 orderUpdate.jsp 6
1.3.3 修改OrderMapper.xml 9
1.3.4 修改OrderMapper接口 9
1.3.5 修改OrderService接口 9
1.3.6 修改OrderServiceImpl 9
1.3.7 OrderController中添加修改保存方法 9
1.4 删除订单 9
1.4.1 修改OrderMapper.xml 9
1.4.2 修改OrderMapper接口 9
1.4.3 修改OrderService接口 9
1.4.4 修改OrderServiceImpl 10
1.4.5 OrderController中添加删除方法 10
1.5 拓展 10
1.5.1 查询关联的门店对象 10
1.5.2 工具:自动生成代码-eclipse插件 10

第七天:订单管理

查询一个订单

改造OrderMapper.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">


  1. <!-- 映射不规则字段<br /> type:要把数据封装给哪个对象<br /> id:该resultMap的唯一标志<br /> --><br /> <resultMap type="Order"<br /> **id="OrderRM">**<br /> <br /><!-- id属性 column是字段名 property是属性名--> <br /> <id column="id" property="id"/><br /> <br /><!-- 其他属性 column是字段名 property是属性名--> <br /> <result column="door_id" property="doorId"/> <br /> <result column="order_no" property="orderNo"/> <br /> <result column="order_type" property="orderType"/> <br /> <result column="person_num" property="personNum"/> <br /> <result column="cashier" property="cashier"/> <br /> <result column="create_time" property="createTime"/> <br /> <result column="end_time" property="endTime"/> <br /> <result column="payment_type" property="paymentType"/> <br /> <result column="price" property="price"/> <br /> <result column="created" property="created"/> <br /> <result column="updated" property="updated"/> <br /> </resultMap>
  2. <!-- 查询所有订单<br /> resultMap:引用一个id值<br /> --><br /> <select id="SelectAll"<br /> resultMap="OrderRM"><br /> select * from tb_order<br /> </select><br /> <br /> <!-- 查询一个订单 <br /> resultMap:引用哪个<br /> --><br /> <select id="SelectOne"<br /> **resultMap="OrderRM">**<br /> select * from tb_order<br /> where id=#{id}<br /> </select><br />

改造OrderMapper接口

package cn.tedu.dao;

import java.util.List;

import cn.tedu.pojo.Order;

public interface OrderMapper {

//查询所有订单 <br />    //<select id="SelectAll"<br />    //resultType="cn.tedu.pojo.Order"><br />    public List<Order> SelectAll();<br />    <br />    //<!-- 查询一个订单 <br />    //<select id="SelectOne"<br />    //resultMap="OrderRM"><br />    public Order SelectOne(Integer id);<br />    <br />    <br />    <br />}

改造OrderService接口

package cn.tedu.dao;

import java.util.List;

import cn.tedu.pojo.Order;

public interface OrderMapper {

//查询所有订单 <br />    //<select id="SelectAll"<br />    //resultType="cn.tedu.pojo.Order"><br />    public List<Order> SelectAll();<br />    <br />    //<!-- 查询一个订单 <br />    //<select id="SelectOne"<br />    //resultMap="OrderRM"><br />    public Order SelectOne(Integer id);<br />    <br />    <br />    <br />}

改造OrderServiceImpl

package cn.tedu.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.tedu.dao.OrderMapper;
import cn.tedu.pojo.Order;

//作用1:交给spring管理对象
//作用2:代表是业务层代码
@Service
public class OrderServiceImpl implements OrderService {

<br />    @Autowired//自动注入dao层<br />    private OrderMapper orderMapper;<br />    <br />    <br />    //查询所有订单<br />    @Override<br />    public List<Order> SelectAll() {<br />        //调用dao层干活<br />        return orderMapper.SelectAll();<br />    }

//<!-- 查询一个订单 <br />    @Override<br />    public Order SelectOne(Integer id) {<br />        return orderMapper.SelectOne(id);<br />    }

}

改造OrderController

<br />package cn.tedu.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.tedu.pojo.Order;
import cn.tedu.service.OrderService;

@Controller
@RequestMapping(“order”)
public class OrderController {

@Autowired //自动注入service层<br />    private OrderService orderService;<br />    <br />    //查询所有订单<br />    @RequestMapping("list")<br />    public String list(Model model){<br />        //查询所有数据<br />        List<Order> list =<br />                orderService.SelectAll();<br />        <br />        //给页面准备数据<br />        model.addAttribute("orderList",list);<br />        <br />        //跳转页面<br />        return "order";<br />        <br />    }<br />    <br />    //查询一个订单<br />    @RequestMapping("findOne")<br />**    @ResponseBody//返回json串**<br />    public Order findOne(Integer id){<br />        return orderService.SelectOne(id);<br />    }<br />    <br />    <br />}

测试

订单管理 - 图1

新增订单

订单管理 - 图2

  1. 点击列表页面的【新增】,跳转到新增页面。

  2. 新增页面需要准备数据(所有门店)

OrderController添加跳转

在订单列表页面,点击【新增】,转到新增页面,需要准备门店数据的下拉列表
@RequestMapping(“toAdd”)
public String toAdd(Model model){
//1、准备数据(所有门店)
List list =
doorService.SelectAll();
model.addAttribute(“doorList”, list);

//2、跳转页面
return “orderAdd”;
}

orderAdd.jsp

<%@ page language=”java” contentType=”text/html; charset=utf-8”
pageEncoding=”utf-8”%>
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core“ %>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd">







永和大王门店管理系统-订单添加




































所属门店:

   
订单号: 订单类型:
人数: 收银员:
开单时间: 结账时间:
支付方式: 支付金额:




  





修改OrderMapper.xml



insert into tb_order values(
#{id},
#{doorId},
#{orderNo},#{orderType},
#{personNum},#{cashier},
#{createTime},#{endTime},
#{paymentType},#{price},
#{created},#{updated}
)

修改OrderMapper接口

//
//
public void add(Order order);

修改OrderService接口

//
//
public void add(Order order);

修改OrderServiceImpl

//
@Override
public void add(Order order) {
orderMapper.add(order);
}

OrderController中添加新增方法

当在订单新增页面,点击【提交】,会访问controller插入数据库,并跳转到列表方法,列出新数据。<br />    //<!-- 新增订单 --><br />    //目的:执行SQL<br />    @RequestMapping("add")<br />    **public** String add(Order order){<br />        //执行SQL<br />        orderService.add(order);<br />        <br />        //刷新列表(访问列表方法)<br />        **return** "redirect:list";<br />    }

注意:日期字段

默认是使用/,但是可以在日期类型的属性上面加注解来改变格式
@DateTimeFormat(pattern=”yyyy-MM-dd”)
如:
//create_time字段
@DateTimeFormat(pattern=”yyyy-MM-dd”)
private Date createTime;

//end_time字段
@DateTimeFormat(pattern=”yyyy-MM-dd”)
private Date endTime;

修改订单

订单管理 - 图3

  1. 点击列表页面的【修改】跳转到修改页面。

  2. 给修改页面准备数据(根据id查询数据)

  3. 点击修改页面的【提交】,向服务器发起请求执行SQL

  4. 刷新列表

OrderController中添加跳转

在订单列表页面,点击【修改】,转到修改页面

//1、点击列表页面的【修改】跳转到修改页面。<br />    //2、给修改页面准备数据(根据id查询数据)<br />    @RequestMapping("toUpdate")<br />    **public** String toUpdate(<br />                        Integer id,<br />                        Model model){<br />        //查询订单数据给页面准备数据<br />        Order order = <br />                orderService.SelectOne(id);<br />        model.addAttribute("order",order);<br />        <br />        //查询门店数据给页面准备下拉框数据<br />        List<Door> list = <br />                doorService.SelectAll();<br />        model.addAttribute("doorList", list);<br />        <br />        //跳转页面<br />        **return** "orderUpdate";<br />        <br />    }<br />    

orderUpdate.jsp

<%@ page language=”java” contentType=”text/html; charset=utf-8”
pageEncoding=”utf-8”%>
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core“ %>
<%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt“ %>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd">







永和大王门店管理系统-订单修改






































所属门店:

   
订单号: 订单类型:
人数: 收银员:
开单时间: "/> 结账时间: "/>
支付方式: 支付金额:




  




修改OrderMapper.xml

<!-- 更新订单 --><br />    <update id=_"update"_><br />        update tb_order set <br />            door_id=#{doorId},<br />            order_no=#{orderNo},<br />            order_type=#{orderType},<br />            person_num=#{personNum},<br />            cashier=#{cashier},<br />            create_time=#{createTime},<br />            end_time=#{endTime},<br />            payment_type=#{paymentType},<br />            price=#{price},<br />            created=#{created},<br />            updated=#{updated}<br />        where id=#{id}<br />    </update><br />    

修改OrderMapper接口

//
//
public void update(Order order);


修改OrderService接口

//
//
public void update(Order order);



修改OrderServiceImpl

@Override<br />    public void update(Order order) {<br />        orderMapper.update(order);<br />    }

OrderController中添加修改方法

1、点击修改页面的【提交】,向服务器发起请求执行SQL
2、刷新列表

//<!-- 更新订单 --><br />    //1、点击修改页面的【提交】,向服务器发起请求执行SQL<br />    //2、刷新列表<br />    @RequestMapping("update")<br />    **public** String abc(Order order){<br />        //1、执行SQL<br />        orderService.update(order);<br />        <br />        //2、刷新列表(访问列表方法)<br />        **return** "redirect:list";<br />    }<br />    

删除订单

修改OrderMapper.xml



delete from tb_order
where id=#{id}

修改OrderMapper接口

//根据id删除订单<br />    public void delete(Integer id);

修改OrderService接口

//根据id删除订单
public void delete(Integer id);

修改OrderServiceImpl

//根据id删除订单<br />    @Override<br />    public void delete(Integer id) {<br />        orderMapper.delete(id);<br />    }

OrderController中添加删除方法

//根据id删除订单<br />    @RequestMapping("delete")<br />    public String delete(Integer id){<br />        //执行SQL<br />        orderService.delete(id);<br />        <br />        //刷新列表(访问列表方法)<br />        return "redirect:list";<br />    }<br />    

拓展

!!!查询关联的门店对象

修改Order实体类

//订单对象和门店对象 一对一
private Door door;
public Door getDoor() {
return door;
}

public void setDoor(Door door) {
this.door = door;
}

修改OrderMapper.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">


<!-- 映射不规则字段 <br />        type:要把数据封装给哪个对象<br />        id:该resultMap的唯一标志<br />    --><br />    <resultMap type=_"Order"_<br />                id=_"OrderRM"_><br />        <br /><!-- id属性 column是字段名  property是属性名-->    <br />        <id column=_"id"_ property=_"id"_/><br />        <br /><!-- 其他属性 column是字段名  property是属性名-->            <br />        <result column=_"door_id"_ property=_"doorId"_/>        <br />        <result column=_"order_no"_ property=_"orderNo"_/>        <br />        <result column=_"order_type"_ property=_"orderType"_/>        <br />        <result column=_"person_num"_ property=_"personNum"_/>        <br />        <result column=_"cashier"_ property=_"cashier"_/>        <br />        <result column=_"create_time"_ property=_"createTime"_/>        <br />        <result column=_"end_time"_ property=_"endTime"_/>        <br />        <result column=_"payment_type"_ property=_"paymentType"_/>        <br />        <result column=_"price"_ property=_"price"_/>        <br />        <result column=_"created"_ property=_"created"_/>        <br />        <result column=_"updated"_ property=_"updated"_/>        <br />    <br />        <!-- 描述一对一的门店对象信息 <br />            association  javaType  用来描述对一的一方的数据<br />            javaType:将要描述哪个关联对象<br />            property:是主对象中的属性<br />        --><br />        <association javaType=_"Door"_ property=_"door"_><br />            <!-- 描述关联对象 --><br />            <id column=_"id"_ property=_"id"_/><br />            <result column=_"name"_ property=_"name"_/><br />            <result column=_"tel"_ property=_"tel"_/><br />            <result column=_"updated"_ property=_"updated"_/><br />            <result column=_"created"_ property=_"created"_/><br />        </association><br />    </resultMap>

<!-- 查询所有订单 <br />        resultMap:引用一个id值<br />    --><br />    <select id=_"SelectAll"_<br />            resultMap=_"OrderRM"_><br />        select * from tb_order<br />    </select><br />    <br />    <!-- 查询一个订单 <br />        resultMap:引用哪个<br />    --><br />    <select id=_"SelectOne"_<br />            resultMap=_"OrderRM"_><br />        select * from tb_order<br />        where id=#{id}<br />    </select><br />    <br />    <!-- 新增订单 --><br />    <insert id=_"add"_><br />        insert into tb_order values(<br />            #{id},<br />            #{doorId},<br />            #{orderNo},#{orderType},<br />            #{personNum},#{cashier},<br />            #{createTime},#{endTime},<br />            #{paymentType},#{price},<br />            #{created},#{updated}<br />        )<br />    </insert><br />    <br />    <!-- 更新订单 --><br />    <update id=_"update"_><br />        update tb_order set <br />            door_id=#{doorId},<br />            order_no=#{orderNo},<br />            order_type=#{orderType},<br />            person_num=#{personNum},<br />            cashier=#{cashier},<br />            create_time=#{createTime},<br />            end_time=#{endTime},<br />            payment_type=#{paymentType},<br />            price=#{price},<br />            created=#{created},<br />            updated=#{updated}<br />        where id=#{id}<br />    </update><br />    <br />    <!-- 根据id删除订单 --><br />    <delete id=_"delete"_><br />        delete from tb_order <br />        where id=#{id}<br />    </delete><br />    

测试

Order [id=1, doorId=1, orderNo=P000011, orderType=堂食, personNum=1, cashier=张静, createTime=Thu Apr 26 14:49:07 CST 2018, endTime=Tue Apr 17 07:24:38 CST 2018, paymentType=微支付, price=8.0, door=Door [id=1, name=永和大王(北三环西路店), tel=110-62112313]]

OrderMapper.xml

resultMap=“OrderRM”>
select * from tb_door t1
left join tb_order t2
on t1.id=t2.door_id

Controller层
遍历list并打印,主要看关联对象信息能不能封装成功

!工具:自动生成代码-eclipse插件

jdbcType 当这个值为null时,告诉jdbc驱动程序,这个值当null时应该按什么类型来处理。
Mysql驱动不需要,Oracle驱动底层不能识别,所以必须指定jdbcType,不指定报错。
只有在修改时,才需要指定。
利用这个工具产生insert的全字段的代码;update使用动态SQL语句的;select一般直接从insert的语句中拷贝字段;delete语句直接拷贝

安装插件

1、将给定的plugins和feaures目录直接拷贝到D:\java\ide\eclipse\dropins
2、重启eclipse。

配置sqlMapGenerator.xml

指定mysql的驱动包的路径(千万别放中文路径下)配置数据源和生成的代码所存放的位置。
创建一个配置文件sqlMapGeneractor.xml,这个文件名称随便起,它会自动识别你文件的头信息是否包含<!DOCTYPE generatorConfiguration>。
<?xml version=”1.0” encoding=”UTF-8” ?>
<!DOCTYPE generatorConfiguration PUBLIC “-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN” “http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd“ >




****











    <!-- 为哪些表生成代码 tableName:表名 schema:不用填写 --><br />        <table schema="" tableName="tb_door" /><br />        <table schema="" tableName="tb_order" />


</context><br /></generatorConfiguration>

配置generatorConfig.properties

suppressAllComments=false
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/yhmisdb?characterEncoding=utf-8
username=root
password=root

modeltargetPackage=cn.tedu.pojo
targetProject=v
sqltargetPackage=cn.tedu.mapper
clienttargetPackage=cn.tedu.dao

生成的配置文件引入核心配置文件中




测试

我们可能会担心一旦重新执行generate的时候,我们自己编写的代码会不会丢失,不会的,插件不会修改或丢弃我们自己编写的代码。
一旦掌握了插件如何使用,重要的工作就是如何使用XXXExample类了。这种方式,完全不用编写繁琐的mapper xml文件。

订单管理 - 图4
订单管理 - 图5