目录
1 第六天:门店UD+订单查询 2
1.1 新增门店 2
1.1.1 DoorController中添加toAdd 2
1.1.2 doorAdd.jsp 2
1.1.3 DoorMapper.xml 3
1.1.4 DoorMapper接口 3
1.1.5 DoorService接口 3
1.1.6 DoorServiceImpl 3
1.1.7 DoorController 3
1.2 修改门店 4
1.2.1 DoorController添加toUpdate 4
1.2.2 doorUpdate.jsp 4
1.2.3 DoorMapper.xml 5
1.2.4 DoorMapper接口 5
1.2.5 DoorService接口 5
1.2.6 DoorServiceImpl 5
1.2.7 DoorController 6
1.3 删除门店 6
1.3.1 DoorMapper.xml 6
1.3.2 DoorMapper接口 6
1.3.3 DoorService接口 6
1.3.4 DoorServiceImpl 6
1.3.5 DoorController 7
总结 7
1.4 ====订单管理 8
1.5 查询所有订单 8
1.5.1 Order对象 8
1.5.2 OrderMapper.xml 11
1.5.3 OrderMapper接口 12
1.5.4 OrderService接口 13
1.5.5 OrderServiceImpl.java 13
1.5.6 OrderController.java 14
1.5.7 order.jsp 15
1.5.8 问题:数据没封装成功 16
1.6 拓展 16
1.6.1 配置别名 16
1.6.1 中文乱码 17
1.6.2 查询关联的门店对象 18

第六天:门店UD+订单查询

订单CRUD+ResultMap对象关联+下拉框
订单对象和门店对象的关系:一对一
订单对象和订单详情对象的关系:一对多

新增门店

  1. 在列表页面点击【新增】访问toAdd方法,跳转到新增页面doorAdd

  2. 在新增页面填写数据,点击【提交】,向服务器发送数据(发起insert语句)

  3. 刷新列表

DoorController中添加toAdd

//1、在列表页面点击【新增】访问toAdd方法,
//跳转到新增页面doorAdd
@RequestMapping(“toAdd”)
public String toAdd(){
return “doorAdd”;
}

doorAdd.jsp

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





  1. <div style="padding: 5px;"><br /> <h1>永和大王门店管理系统-门店添加</h1><br /> </div>
  2. <form action="add" method="post"><br /> 名称:<input type="text" name="name"/><br /> 电话:<input type="text" name="tel"/><br /> <input type="submit" value="提交"><br /> </form><br /></body>

DoorMapper.xml

<!-- 添加门店 --><br />    <insert id=_"add"_><br />        insert into tb_door values(<br />        #{id},#{name},#{tel},#{updated},#{created}<br />        )<br />    </insert>

DoorMapper接口

//
//
public void add(Door door);

DoorService接口

//
//
public void add(Door door);

DoorServiceImpl

@Override
public void add(Door door) {
doorMapper.add(door);
}

DoorController

添加页面点击【提交】,需要调回列表页面,需要在添加方法里修改返回值,变成转发到列表方法。
//在新增页面填写数据,点击【提交】,
//就向服务器发送请求(发起insert语句)
@RequestMapping(“add”)
public String add(Door door){
doorService.add(door);
//添加页面点击【提交】,需要刷新列表页面,
//需要在添加方法里修改返回值,
//变成了重定向到列表方法,重新查数据做显示。
return “redirect:list”;
}

修改门店

  1. 点击列表页面的【修改】,向服务器发送请求toUpdate方法(带着记录的id

  2. toUpdate方法中,拿着id查询数据,返回doorUpdate页面,在页面做回显

  3. 点击【提交】,向服务器发送请求(执行update语句

  4. 刷新列表

DoorController添加toUpdate

//toUpdate方法中,拿着id查询数据,
//返回doorUpdate页面,在页面做回显
@RequestMapping(“toUpdate”)
public String toUpdate(
Integer id,
Model model){
//拿着id查询数据
Door door =
doorService.SelectOne(id);

//给页面准备数据Model
model.addAttribute(“door”, door);

//跳转修改页面
return “doorUpdate”;
}

doorUpdate.jsp

在doorList.jsp中添加修改

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





<div style="padding: 5px;"><br />        <h1>永和大王门店管理系统-门店更新</h1><br />    </div>

**



**

    名称:<input type="text" name="name"** ****value="${door.name}"**/><br />        电话:<input type="text" name="tel" **value="${door.tel}"**/><br />        <br />        <input type="submit" value="提交"><br />    </form><br /></body>

DoorMapper.xml

<!-- 修改门店 now()获取当前时间--><br />    <update id=_"update"_><br />        update tb_door set <br />            name=#{name},<br />            tel=#{tel},<br />            created=now(),<br />            updated=now()<br />        where id=#{id}<br />    </update><br />    

DoorMapper接口

//
//
public void update(Door door);

DoorService接口

//
//
public void update(Door door);

DoorServiceImpl

//
@Override
public void update(Door door) {
doorMapper.update(door);
}

DoorController

//
@RequestMapping(“update”)
public String update(Door door){
//更新数据
doorService.update(door);

//跳转到列表(访问列表方法)
return “redirect:list”;
}

删除门店

  1. 获取到当前记录的id,向服务器发送请求

  2. 执行delete的SQL,返回的不是页面,而是刷新列表

DoorMapper.xml



delete from tb_door
where id=#{id}

DoorMapper接口

//
//
public void delete(Integer id);

DoorService接口

//
//
public void delete(Integer id);

DoorServiceImpl

//删除门店
@Override
public void delete(Integer id) {
doorMapper.delete(id);
}

DoorController

//删除门店<br />    @RequestMapping("delete")<br />    **public** String delete(Integer id){<br />        //删除门店<br />        doorService.delete(id);<br />        <br />        //跳转到列表方法(执行列表方法)<br />        **return** "redirect:list";<br />    }

总结

门店UD 订单查询 - 图1

====订单管理

查询所有订单

门店UD 订单查询 - 图2

Order对象

package cn.tedu.pojo;

import java.util.Date;

//描述订单表
public class Order extends BasePojo{
//id字段
private Integer id;

//door_id字段
private Integer doorId;

//order_no字段
private String orderNo;

//order_type字段
private String orderType;

//person_num字段
private Integer personNum;

//cashier字段
private String cashier;

//create_time字段
private Date createTime;

//end_time字段
private Date endTime;

//payment_type字段
private String paymentType;

//price字段
private Double price;

//getters and setters

public Integer getId() {
return id;
}

**public** **void** setId(Integer id) {<br />        **this**.id = id;<br />    }

**public** Integer getDoorId() {<br />        **return** doorId;<br />    }

**public** **void** setDoorId(Integer doorId) {<br />        **this**.doorId = doorId;<br />    }

**public** String getOrderNo() {<br />        **return** orderNo;<br />    }

**public** **void** setOrderNo(String orderNo) {<br />        **this**.orderNo = orderNo;<br />    }

**public** String getOrderType() {<br />        **return** orderType;<br />    }

**public** **void** setOrderType(String orderType) {<br />        **this**.orderType = orderType;<br />    }

**public** Integer getPersonNum() {<br />        **return** personNum;<br />    }

**public** **void** setPersonNum(Integer personNum) {<br />        **this**.personNum = personNum;<br />    }

**public** String getCashier() {<br />        **return** cashier;<br />    }

**public** **void** setCashier(String cashier) {<br />        **this**.cashier = cashier;<br />    }

**public** Date getCreateTime() {<br />        **return** createTime;<br />    }

**public** **void** setCreateTime(Date createTime) {<br />        **this**.createTime = createTime;<br />    }

**public** Date getEndTime() {<br />        **return** endTime;<br />    }

**public** **void** setEndTime(Date endTime) {<br />        **this**.endTime = endTime;<br />    }

**public** String getPaymentType() {<br />        **return** paymentType;<br />    }

**public** **void** setPaymentType(String paymentType) {<br />        **this**.paymentType = paymentType;<br />    }

**public** Double getPrice() {<br />        **return** price;<br />    }

**public** **void** setPrice(Double price) {<br />        **this**.price = price;<br />    }<br />    <br />    <br />    //toString<br />        <br />    @Override<br />    **public** String toString() {<br />        **return** "Order [id=" + id + ", doorId=" + doorId + ", orderNo=" + orderNo + ", orderType=" + orderType<br />                + ", personNum=" + personNum + ", cashier=" + cashier + ", createTime=" + createTime + ", endTime="<br />                + endTime + ", paymentType=" + paymentType + ", price=" + price + "]";<br />    }<br />    <br />    <br />    <br />    <br />    <br />}

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 />        resultType代表结果集要封装给谁<br />    --><br />    <select id=_"SelectAll"_<br />            resultType=_"cn.tedu.pojo.Order"_><br />        select * from tb_order<br />    </select><br />    <br />    

OrderMapper接口

门店UD 订单查询 - 图3
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 />    <br />    <br />}

OrderService接口

门店UD 订单查询 - 图4
package cn.tedu.service;

import java.util.List;

import cn.tedu.pojo.Order;

public interface OrderService {

//查询所有订单
// //resultType=”cn.tedu.pojo.Order”>
public List SelectAll();

}

OrderServiceImpl.java

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 />    }

}

OrderController.java

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 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 />    <br />}

order.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">







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



新增



























序号 订单号 类型 人数 收银员 下单时间 结账时间 支付类型 价格 操作
${i.index+1} ${o.orderNo} ${o.orderType} ${o.personNum} ${o.cashier} pattern=”yyyy-MM-dd HH:mm:ss” /> pattern=”yyyy-MM-dd HH:mm:ss” /> ${o.paymentType} ${o.price}
修改
删除


!!!问题:数据没封装成功,需要使用resultMap

由于实体中的属性名和表中的字段名不一致,导致无法使用resultType来封装,这时需要使用resultMap来解决。
<?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=_"cn.tedu.pojo.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 />    

拓展

配置别名

在applicationContext-mybatis.xml中配置别名包,就会把类名作为别名:
xmlns:context=”http://www.springframework.org/schema/context“ xmlns:p=”http://www.springframework.org/schema/p
xmlns:aop=”http://www.springframework.org/schema/aop“ xmlns:tx=”http://www.springframework.org/schema/tx
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

<!-- 配置sqlsessionfactory --><br />    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><br />        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property><br />        <property name="dataSource" ref="dataSource"></property><br />    <br />        <!-- 扫描mapper --><br />        <property name="mapperLocations" value="classpath:mybatis/mapper/*.xml"></property><br />    <br />        <!-- 配置别名包 --><br /><property name="**typeAliasesPackage**" value="cn.tedu.pojo"></property><br />        <br />    </bean><br />    <br />    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <br />        <property name="basePackage" value="cn.tedu.dao"></property><br />    </bean><br />    <br /></beans>

中文乱码

在jsp中的form中加属性accept-charset=”utf-8”
在web.xml中添加字符集过滤器:
  characterEncodingFilter   org.springframework.web.filter.CharacterEncodingFilter        encoding     UTF-8           forceEncoding     true   
  characterEncodingFilter   /*

查询关联的门店对象

修改Order实体类

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