商品查询模块

一 、商品查询

编写实体类

package nju.software.domain;
import nju.software.utils.DateUtils;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

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 getId() {
    return id;
}

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

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() {
        if(departureTime != null){
            departureTimeStr = DateUtils.data2String(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;
    }
}

持久层接口(dao)

    package nju.software.dao;
    
    import nju.software.domain.Product;
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Select;
    import java.util.List;
    
    public interface IProductDao {
        @Select("select * from product")
        public List<Product> findAll() throws Exception;
        @Insert("insert into product(id,productNum,productName,cityName,departureTime,productPrice,productDesc,productStatus) values(#{id},#{productNum},#{productName},#{cityName},#{departureTime},#{productPrice},#{productDesc},#{productStatus})")
        void save(Product product);
        @Select("select * from product where id = #{id}")
        public Product findById(String id) throws Exception;
    
    }
package nju.software.controller;

import nju.software.domain.Product;
import nju.software.service.IProductService;
import nju.software.utils.StringRandomUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/product")
public class ProductController {
    @Autowired
    private IProductService iProductService;
@RequestMapping("/findAll.do")
public ModelAndView findAll() throws Exception {
    ModelAndView mv = new ModelAndView();
    List<Product> ps = iProductService.findAll();
    mv.addObject("productList",ps);
    mv.setViewName("product-list1");
    return mv;
    }
      @RequestMapping("/save.do")
public String save(Product product) throws Exception {
   String id = StringRandomUtils.getUUID().toUpperCase();
    product.setId(id);
    iProductService.save(product);
    return "redirect:findAll.do";
}
}

业务层service层
IProductService

package nju.software.service;

import nju.software.domain.Product;
import java.util.List;

public interface IProductService {
    public void save(Product product) ;
    public List<Product> findAll() throws Exception;
}

ProductServiceImpl

import nju.software.dao.IProductDao;
import nju.software.domain.Product;
import nju.software.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Service
@Transactional
public class ProductServiceImpl implements IProductService {
    @Autowired
    private IProductDao productDao;

    @Override
    public void save(Product product) {
        productDao.save(product);
    }

    @Override
    public List<Product> findAll() throws Exception {
        return productDao.findAll();
    }
}

Controller层

package nju.software.controller;

import nju.software.domain.Product;
import nju.software.service.IProductService;
import nju.software.utils.StringRandomUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/product")
public class ProductController {
    @Autowired
    private IProductService iProductService;
    @RequestMapping("/save.do")
    public String save(Product product) throws Exception {
       String id = StringRandomUtils.getUUID().toUpperCase();
        product.setId(id);
        iProductService.save(product);
        return "redirect:findAll.do";
    }
    @RequestMapping("/findAll.do")
    public ModelAndView findAll() throws Exception {
        ModelAndView mv = new ModelAndView();
        List<Product> ps = iProductService.findAll();
        mv.addObject("productList",ps);
        mv.setViewName("product-list");
        return mv;
    }
}

在这里插入图片描述

注意
页面上的出发时间和状态的显示问题

  1. 对于状态:在JavaBean里增加了字段productStatusStr,就是为了转化,因为页面上的状态并不是数据库中的1或者0。
    private String productStatusStr;
    
    //前端页面获取值采用转化的productStatusStr字段来处理 
    
    <td class="text-center">${product.productStatusStr }</td>

在JavaBean中(${product.productStatusStr}中.后面的和getXxx的Xxx一致!!!)

 public String getProductStatusStr() {
        if (productStatus != null){
            if (productStatus == 0){
                productStatusStr = "关闭";
            }
            if (productStatus == 1){
                productStatusStr = "开启";
            }
        }
        return productStatusStr;
    }
  1. 对于出发时间:在JavaBean里增加了字段getDepartureTimeStr,这里涉及到string和Date类型之间的转换。因此创建一个工具类Utils。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {
    //日期转换成字符串
    public static String data2String(Date date,String pattern){
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        String format = sdf.format(date);
        return format;
    }
    //字符串转化为日期
    public static Date string2Date(String str,String pattern) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        Date date = sdf.parse(str);
        return date;
    }
}

在JavaBean中处理:

 public String getDepartureTimeStr() {
            if(departureTime != null){
                departureTimeStr = DateUtils.data2String(departureTime,"yyyy-MM-dd HH:mm:ss");
            }
        return departureTimeStr;
    }

二、商品添加

在这里插入图片描述
在源码中可以看到product-add页面的出发日期,input的类型是text类型但是点击输入框弹出来的是日历
在这里插入图片描述
在这里插入图片描述
这里注意一下springmvc中绑定参数类型转换
使用@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm”)是前台的string转化为Date类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值