ssm-企业权限项目-订单操作

补全用户管理页 .

在这里插入图片描述
我们数据库是以数字代表状态的,实体类时间是Date类型,而页面是String类型,所以需要转换.

编写工具类.

/**
 * @Author: 刚满20就秃顶
 * @Code:
 */
/*日期转换为字符串*/
public class DateUtils {
    public static String ToString(Date date ,String str){
         SimpleDateFormat sdf = new SimpleDateFormat(str);
         String format = sdf.format(date);
         return format;
    }
    /*字符串转换为日期*/
    public static  Date ToDate(String str, String dateString ) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(str);
        Date parse = sdf.parse(dateString);
        return  parse ;
    }
}
 

将实体类的时间状态转换一下.
在这里插入图片描述
产品状态.
在这里插入图片描述

跳转首页

导入main.jsp:
在这里插入图片描述
从index.jsp重定向到 /pages/main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<html>
<body>
<jsp:forward page="/pages/main.jsp"></jsp:forward>

</body>
</html>


关闭main.jsp的EL忽略

在这里插入图片描述

新增数据

在这里插入图片描述

先加入日志文件log4j.properties到resource中,方便排错

为网页的新建按钮添加单击事件: 跳转到绝对路径下的 /pages/product-add.jsp页面
在这里插入图片描述

跳转到producer-add.jsp页面
填写需要新增数据:
将数据提交到Controller层的save方法
在这里插入图片描述
Dao. Sevice一样的利用Dao调用Dao

public interface IProductDao  {
    @Select("select * from product")
    public List<Product> findAll();
    @Insert("insert into product(productNum,productName,cityName,departureTime,productPrice,productDesc,productStatus) values(#{productNum},#{productName},#{cityName},#{departureTime},#{productPrice},#{productDesc},#{productStatus})")
    Product saveProduct(Product pro);
}

**添加完成数据,将页面跳转到查询所有页面**

/**
 * @Author: 刚满20就秃顶
 * @Code:
 */

@Controller

@RequestMapping("/product")
public class ProductController {
    @Autowired
    private IProductService service ;

    /*查询所有*/
    @RequestMapping("/findAll")
    public String findAll(Model model){
        List<Product>  productList =service.findAll();
        System.out.println("得到了List集合:"+productList);

        model.addAttribute("productList",productList);
        System.out.println("成功添加了productList");
        return "product-list";
    }

    /*添加*/
    @RequestMapping("/save")
    public String save(Product pro){
        System.out.println("马上执行save");
        service.saveProduct(pro);
        System.out.println("save执行了");
        return "redirect:findAll" ;
    }

}

但是这样却会报departureTime错误
原因:时间不类型不匹配 :页面上时间的输入是String类型而我们实体类是Date类型
解决办法:加上@DateTimeFormat注解
在这里插入图片描述

public class Product {
    private String id; // 主键
    private String productNum; // 编号 唯一
    private String productName; // 名称
    private String cityName; // 出发城市

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date departureTime; // 出发时间
    private String departureTimeStr;    //时间状态
    private double productPrice; // 产品价格
    private String productDesc; // 产品描述
    private Integer productStatus; // 状态 0 关闭 1 开启
    private String productStatusStr;   //状态页面的显示

    public String getProductNum() {
        return productNum;
    }

    public void setProductNum(String productNum) {
        this.productNum = productNum;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public Date getDepartureTime() {
        return departureTime;
    }

    public void setDepartureTime(Date departureTime) {
        this.departureTime = departureTime;
    }

    public String getDepartureTimeStr() {
        //将日期转化为String类型
        if(departureTime!=null){
            departureTimeStr = DateUtils.ToString(departureTime, "yyyy-MM-dd HH:mm:ss");
        }
        return departureTimeStr;
    }

    public void setDepartureTimeStr(String departureTimeStr) {
        this.departureTimeStr = departureTimeStr;
    }

    public double getProductPrice() {
        return productPrice;
    }

    public void setProductPrice(double productPrice) {
        this.productPrice = productPrice;
    }

    public String getProductDesc() {
        return productDesc;
    }

    public void setProductDesc(String productDesc) {
        this.productDesc = productDesc;
    }

    public Integer getProductStatus() {
        return productStatus;
    }

    public void setProductStatus(Integer productStatus) {
        this.productStatus = productStatus;
    }

    public String getProductStatusStr() {

        if(productStatus!=null){
            if(productStatus==0){
                productStatusStr="关闭";
            }
            if(productStatus==1){
                productStatusStr="开启";
            }

        }
        return productStatusStr;
    }
  /*设置页面  状态属性显示*/
    public void setProductStatusStr(String productStatusStr) {
        this.productStatusStr = productStatusStr;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;

    }


    @Override
    public String toString() {
        return "Product{" +
                "id='" + id + '\'' +
                ", productNum='" + productNum + '\'' +
                ", productName='" + productName + '\'' +
                ", cityName='" + cityName + '\'' +
                ", departureTime=" + departureTime +
                ", departureTimeStr='" + departureTimeStr + '\'' +
                ", productPrice=" + productPrice +
                ", productDesc='" + productDesc + '\'' +
                ", productStatus=" + productStatus +
                ", productStatusStr='" + productStatusStr + '\'' +
                '}';
    }
}

在这里插入图片描述

新增数据完成.

订单操作:

订单,会员,旅客,数据表创建.

在这里插入图片描述

-- 订单
drop table orders;
CREATE TABLE orders(
  id varchar2(32) default SYS_GUID() PRIMARY KEY,
  orderNum VARCHAR2(20) NOT NULL UNIQUE,
  orderTime timestamp,
  peopleCount INT,
  orderDesc VARCHAR2(500),
  payType INT,
  orderStatus INT,
  productId varchar2(32),
  memberId varchar2(32),
  FOREIGN KEY (productId) REFERENCES product(id),
  FOREIGN KEY (memberId) REFERENCES member(id)
)
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('0E7231DC797C486290E8713CA3C6ECCC', '12345', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '676C5BD1D35E429A8C2E114939C5685A', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('5DC6A48DD4E94592AE904930EA866AFA', '54321', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '676C5BD1D35E429A8C2E114939C5685A', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('2FF351C4AC744E2092DCF08CFD314420', '67890', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('A0657832D93E4B10AE88A2D4B70B1A28', '98765', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('E4DD4C45EED84870ABA83574A801083E', '11111', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('96CC8BD43C734CC2ACBFF09501B4DD5D', '22222', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '12B7ABF2A4C544568B0A7C69F36BF8B7', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('55F9AF582D5A4DB28FB4EC3199385762', '33333', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('CA005CF1BE3C4EF68F88ABC7DF30E976', '44444', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F', 'E61D65F673D54F68B0861025C69773DB');
insert into ORDERS (id, ordernum, ordertime, peoplecount, orderdesc, paytype, orderstatus, productid, memberid)
values ('3081770BC3984EF092D9E99760FDABDE', '55555', to_timestamp('02-03-2018 12:00:00.000000', 'dd-mm-yyyy hh24:mi:ss.ff'), 2, '没什么', 0, 1, '9F71F01CB448476DAFB309AA6DF9497F', 'E61D65F673D54F68B0861025C69773DB');


-- 会员
drop table member;
CREATE TABLE member(
       id varchar2(32) default SYS_GUID() PRIMARY KEY,
       NAME VARCHAR2(20),
       nickname VARCHAR2(20),
       phoneNum VARCHAR2(20),
       email VARCHAR2(20) 
);
insert into MEMBER (id, name, nickname, phonenum, email)
values ('E61D65F673D54F68B0861025C69773DB', '张三', '小三', '18888888888', '[email protected]');


-- 旅客
drop table traveller;
CREATE TABLE traveller(
  id varchar2(32) default SYS_GUID() PRIMARY KEY,
  NAME VARCHAR2(20),
  sex VARCHAR2(20),
  phoneNum VARCHAR2(20),
  credentialsType INT,
  credentialsNum VARCHAR2(50),
  travellerType INT
)
insert into TRAVELLER (id, name, sex, phonenum, credentialstype, credentialsnum, travellertype)
values ('3FE27DF2A4E44A6DBC5D0FE4651D3D3E', '张龙', '男', '13333333333', 0, '123456789009876543', 0);
insert into TRAVELLER (id, name, sex, phonenum, credentialstype, credentialsnum, travellertype)
values ('EE7A71FB6945483FBF91543DBE851960', '张小龙', '男', '15555555555', 0, '987654321123456789', 1);


-- 订单与旅客中间表
drop table order_traveller;
CREATE TABLE order_traveller(
  orderId varchar2(32),
  travellerId varchar2(32),
  PRIMARY KEY (orderId,travellerId),
  FOREIGN KEY (orderId) REFERENCES orders(id),
  FOREIGN KEY (travellerId) REFERENCES traveller(id)
)

insert into ORDER_TRAVELLER (orderid, travellerid)
values ('0E7231DC797C486290E8713CA3C6ECCC', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('2FF351C4AC744E2092DCF08CFD314420', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('3081770BC3984EF092D9E99760FDABDE', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('55F9AF582D5A4DB28FB4EC3199385762', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('5DC6A48DD4E94592AE904930EA866AFA', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('96CC8BD43C734CC2ACBFF09501B4DD5D', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('A0657832D93E4B10AE88A2D4B70B1A28', '3FE27DF2A4E44A6DBC5D0FE4651D3D3E');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('CA005CF1BE3C4EF68F88ABC7DF30E976', 'EE7A71FB6945483FBF91543DBE851960');
insert into ORDER_TRAVELLER (orderid, travellerid)
values ('E4DD4C45EED84870ABA83574A801083E', 'EE7A71FB6945483FBF91543DBE851960');


创建实体类:

Order:
数据库中以数字状态信息,所以我们这里要具体出来.

//订单类
public class Orders {
    private String id;
    private String orderNum;
    private Date orderTime;
    private String orderTimeStr;
    private int orderStatus;

    private String orderStatusStr;

    private int peopleCount;
    private Product product;
    private List<Traveller> travellers;
    private Member member;
    private Integer payType;
    private String payTypeStr;
    private String orderDesc;


         //数据库中以数字代表,所以我们这里要写出来
    public String getOrderStatusStr() {
        //订单状态(0 未支付 1 已支付)
        if(orderStatus==0){
            orderStatusStr="未支付";
        }else if(orderStatus==1){
            orderStatusStr="已支付";
        }
        return orderStatusStr;
    }




    public int getOrderstatus() {
        return orderStatus;
    }

    public void setOrderStatusStr(String orderStatusStr) {
        this.orderStatusStr = orderStatusStr;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(String orderNum) {
        this.orderNum = orderNum;
    }

    public Date getOrderTime() {
        return orderTime;
    }

    public void setOrderTime(Date orderTime) {
        this.orderTime = orderTime;
    }

    public String getOrderTimeStr() {
    
        //转换为字符串形式
        if (orderTime!=null) {
            orderTimeStr = DateUtils.ToString(orderTime, "yyyy-MM-dd HH:mm");

        }
        return orderTimeStr;
    }

    public void setOrderTimeStr(String orderTimeStr) {
        this.orderTimeStr = orderTimeStr;
    }

    public int getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(int orderStatus) {
        this.orderStatus = orderStatus;
    }

    public int getPeopleCount() {
        return peopleCount;
    }

    public void setPeopleCount(int peopleCount) {
        this.peopleCount = peopleCount;
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public List<Traveller> getTravellers() {
        return travellers;
    }

    public void setTravellers(List<Traveller> travellers) {
        this.travellers = travellers;
    }

    public Member getMember() {
        return member;
    }

    public void setMember(Member member) {
        this.member = member;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setPayType(Integer payType) {

        this.payType = payType;
    }

    public String getPayTypeStr() {
        //支付方式(0 支付宝 1 微信 2其它)
        if(payType==0){
            payTypeStr="支付宝";
        }else if(payType==1){
            payTypeStr="微信";
        }else if(payType==2){
            payTypeStr="其它";
        }
        return payTypeStr;
    }

    public void setPayTypeStr(String payTypeStr) {
        this.payTypeStr = payTypeStr;
    }

    public String getOrderDesc() {
        return orderDesc;
    }

    public void setOrderDesc(String orderDesc) {
        this.orderDesc = orderDesc;
    }

    @Override
    public String toString() {
        return "Traveller{" +
                "id='" + id + '\'' +
                ", orderNum='" + orderNum + '\'' +
                ", orderTime=" + orderTime +
                ", orderTimeStr='" + orderTimeStr + '\'' +
                ", orderStatus=" + orderStatus +
                ", peopleCount=" + peopleCount +
                ", product=" + product +
                ", travellers=" + travellers +
                ", member=" + member +
                ", payType=" + payType +
                ", payTypeStr='" + payTypeStr + '\'' +
                ", orderDesc='" + orderDesc + '\'' +
                '}';
    }
}

Member类.


//会员类
public class Member {
    private String id;
    private String name;
    private String nickname;
    private String phoneNum;
    private String email;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Member{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", nickname='" + nickname + '\'' +
                ", phoneNum='" + phoneNum + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

Traveller类.

/*旅客*/
public class Traveller {
    private String id;
    private String name;
    private String sex;
    private String phoneNum;
    private Integer credentialsType;
    private String credentialsTypeStr;
    private String credentialsNum;
    private Integer travellerType;
    private String travellerTypeStr;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }

    public Integer getCredentialsType() {
        return credentialsType;
    }

    public void setCredentialsType(Integer credentialsType) {
        this.credentialsType = credentialsType;
    }

    public String getCredentialsTypeStr() {
        return credentialsTypeStr;
    }

    public void setCredentialsTypeStr(String credentialsTypeStr) {
        this.credentialsTypeStr = credentialsTypeStr;
    }

    public String getCredentialsNum() {
        return credentialsNum;
    }

    public void setCredentialsNum(String credentialsNum) {
        this.credentialsNum = credentialsNum;
    }

    public Integer getTravellerType() {
        return travellerType;
    }

    public void setTravellerType(Integer travellerType) {
        this.travellerType = travellerType;
    }

    public String getTravellerTypeStr() {
        return travellerTypeStr;
    }

    public void setTravellerTypeStr(String travellerTypeStr) {
        this.travellerTypeStr = travellerTypeStr;
    }


    @Override
    public String toString() {
        return "Traveller{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", phoneNum='" + phoneNum + '\'' +
                ", credentialsType=" + credentialsType +
                ", credentialsTypeStr='" + credentialsTypeStr + '\'' +
                ", credentialsNum='" + credentialsNum + '\'' +
                ", travellerType=" + travellerType +
                ", travellerTypeStr='" + travellerTypeStr + '\'' +
                '}';
    }
}

创建Dao层:

public interface IOrderdDao {

     //查询数据,多表关联  通过id查询到product的数据
   @Select("select *  from orders")
   @Results({
           @Result(id=true,property = "id",column = "id"),
           @Result(property = "orderNum",column = "orderNum"),
           @Result(property = "orderTime",column = "orderTime"),
           @Result(property = "orderStatus",column = "orderStatus"),
           @Result(property = "peopleCount",column = "peopleCount"),
           @Result(property = "peopleCount",column = "peopleCount"),
           @Result(property = "payType",column = "payType"),
           @Result(property = "orderDesc",column = "orderDesc"),
           @Result(property = "product",column = "productId",javaType = Product.class,one = @One(select = "com.itheima.dao.IProductDao.findById")),

   })

   public List<Orders> findAll();
}

Service层.

public interface IOrdersService {
  public  List<Orders> findAll();
}

ServiceImpl.


/**
 * @Author: 刚满20就秃顶
 * @Code:
 */
@Service
@Transactional
public class OrdersServiceImpl implements IOrdersService { 
    @Autowired
    IOrderdDao dao ; 
    
    @Override
    public List<Orders> findAll() { 
        return dao.findAll();
    }
}

Controller层.

@Controller
@RequestMapping("/orders")
public class OrderController {
    @Autowired
    private IOdersService service ;
    @RequestMapping("/findAll")
    public String findAll(Model model){
  
        List<Orders> list = service.findAll();
        model.addAttribute("ordersList",list);
        return "orders-list";
    }
}

分页显示条数:

固定设置为每页显示4条
在这里插入图片描述
IOrderdDao中findAll方法.

public interface IOrderdDao {

     //查询数据,多表关联  通过id查询到product的数据 得到多表并和数据
     @Select("select * from orders")
     @Results({
             @Result(id=true,property = "id",column = "id"),
             @Result(property = "orderNum",column = "orderNum"),
             @Result(property = "orderTime",column = "orderTime"),
             @Result(property = "orderStatus",column = "orderStatus"),
             @Result(property = "peopleCount",column = "peopleCount"),
             @Result(property = "peopleCount",column = "peopleCount"),
             @Result(property = "payType",column = "payType"),
             @Result(property = "orderDesc",column = "orderDesc"),       //得到根据联合表id得到Product数据
             @Result(property = "product",column = "productId",javaType = Product.class,one = @One(select = "com.itheima.dao.IProductDao.findById")),
     })
     public List<Orders> findAll() throws Exception;
}

Service层的IOrdersService.

/**
 * @Author: 刚满20就秃顶
 * @Code:
 */
public interface IOrdersService {
  List<Orders> findAll(int page,int size) throws Exception;
}

SerivceImpl:

@Service
@Transactional
public class OrdersServiceImpl implements IOrdersService {
    @Autowired
    IOrderdDao dao ;
    @Override
    public List<Orders> findAll(int page, int size) throws Exception {
        //参数pageNum 是页码值   参数pageSize 代表是每页显示条数
        PageHelper.startPage(page,size);
        return dao.findAll();
    }
}

Controlle层.

@RequestMapping("/orders")
public class OrderController {
    @Autowired
    private IOdersService service ;
    @RequestMapping("/findAll")
    //我们在aside.jsp上设置了href的值,带参数page和size的值,
    // 这里通过@RequsetParam获取并设置赋给page和size,service利用该参数值,进行分页查询
    public String findAll(Model model , @RequestParam(name = "page" ,required = true ,defaultValue = "1")int page,
                          @RequestParam(name = "size",required = true ,defaultValue = "4")int size){
         List<Orders> list =service.findAll(page, size);
         //将得到的结果进行分页
        PageInfo info = new PageInfo(list);
        model.addAttribute("PageInfo",info);
        return "orders-page-list";
    }
}

设置侧边栏.

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

自定分页显示条数

在这里插入图片描述

自定义每页显示的页数.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

订单详情查询

点击详情页查询个人信息.在这里插入图片描述
用到了三张表,
订单表: Orders.
游客表:Traveller.
会员表: Member
在这里插入图片描述
点击详情按钮携带id到Controller层方法.
在这里插入图片描述
Controller.
接收到jsp页面传递的id值.
创建findById方法.

   @RequestMapping("/findById")
    public String findById(Model model,@RequestParam(name = "id" ,required = true) String ordersId ) throws Exception {
    Orders orders =  service.finById(ordersId);
    model.addAttribute("orders",orders);
    return  "orders-show";
   }

根据Controller编写Service和Dao层.
Service.
在这里插入图片描述
ServiceImpl.
在这里插入图片描述
Dao.
在这里插入图片描述

/**
 * @Author: 刚满20就秃顶
 * @Code:
 */
public interface IOrderdDao {

     //查询数据,多表关联  通过id查询到product的数据 得到多表并和数据
     @Select("select * from orders")
     @Results({
             @Result(id=true,property = "id",column = "id"),
             @Result(property = "orderNum",column = "orderNum"),
             @Result(property = "orderTime",column = "orderTime"),
             @Result(property = "orderStatus",column = "orderStatus"),
             @Result(property = "peopleCount",column = "peopleCount"),
             @Result(property = "peopleCount",column = "peopleCount"),
             @Result(property = "payType",column = "payType"),
             @Result(property = "orderDesc",column = "orderDesc"),       //得到根据联合表id得到Product数据
             @Result(property = "product",column = "productId",javaType = Product.class,one = @One(select = "com.itheima.dao.IProductDao.findById")),
     })
     public List<Orders> findAll() throws Exception;


     /* 详情按钮   多表操作 */

  @Select("select * from orders where id=#{ordersId}")
  @Results({
             @Result(id=true,property = "id",column = "id"),
             @Result(property = "orderNum",column = "orderNum"),
             @Result(property = "orderTime",column = "orderTime"),
             @Result(property = "orderStatus",column = "orderStatus"),
             @Result(property = "peopleCount",column = "peopleCount"),
             @Result(property = "peopleCount",column = "peopleCount"),
             @Result(property = "payType",column = "payType"),
             @Result(property = "orderDesc",column = "orderDesc"),
             //一对一   得到根据联合表id得到Product数据
             @Result(property = "product",column = "productId",javaType = Product.class,one = @One(select = "com.itheima.dao.IProductDao.findById")),
             //一对一
             @Result(property = "member",column = "memberId",javaType = Member.class,one = @One(select = "com.itheima.dao.IMemberDao.findById")),
             //多对多   得到订单关联的游客对象`   @Select("select * from member where id = #{id}")
    public Member findById();`
             @Result(property = "travellers",column = "id",javaType = java.util.List.class,many= @Many(select = "com.itheima.dao.ITravellerDao.findByOrdersId")),
    })
  Orders finById(String ordersId) throws Exception;
}

一对一关联Product.
在ProductDao中创建findById方法.

 @Select("select * from product where id = #{id}")
    public Product findById(String id);

一对一关联Member.

   @Select("select * from member where id = #{id}")
    public Member findById();

多对多关联Traveller.

 // 先通过中间表查询,在与旅客表进行查询
 @Select("select * from traveller where id in (select travellerId from order_traveller where orderId=#{ordersId})")
    public List<Traveller> findByOrdersId(String ordersId) throws Exception;

最后Controller层:
在这里插入图片描述
在这里插入图片描述
但是发现证件类型和人群没有结果
老样子:

在这里插入图片描述

在这里插入图片描述

代码:

SSM-源

发布了24 篇原创文章 · 获赞 2 · 访问量 448

猜你喜欢

转载自blog.csdn.net/tiangoua/article/details/103892244