目录
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">
<!-- 映射不规则字段<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><!-- 查询所有订单<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 />}
测试

新增订单

点击列表页面的【新增】,跳转到新增页面。
新增页面需要准备数据(所有门店)
OrderController添加跳转
在订单列表页面,点击【新增】,转到新增页面,需要准备门店数据的下拉列表
@RequestMapping(“toAdd”)
public String toAdd(Model model){
//1、准备数据(所有门店)
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;
修改订单

点击列表页面的【修改】跳转到修改页面。
给修改页面准备数据(根据id查询数据)
点击修改页面的【提交】,向服务器发起请求执行SQL
刷新列表
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文件。


