杨校老师项目之基于SSM企业物流快递配送管理系统

简介: 杨校老师项目之基于SSM企业物流快递配送管理系统
1. 获取代码:

添加博主微信获取,备注来源:

2. 项目描述

基于SSM框架开发的企业物流(快递)配送管理平台。

3.功能简介


4. 技术栈:

Jsp + SSM + MySQL + LayUI + Bootstrap

5. 运行环境

IntelliJ IDEA/Eclipse + MySQL5.7+ JDK1.8 + Maven3.5.4 + Tomcat9.0

6.前台界面

7. 后台界面

8. 代码展示
  • 8.1 货物的实体类
package cn.javabs.logistics.entity.common;

import java.math.BigDecimal;

import org.springframework.stereotype.Component;

import cn.javabs.logistics.entity.admin.Enterprise;
import cn.javabs.logistics.entity.admin.GoodsType;

/**
 * 货物实体类
 * 
 * @author Mryang
 *
 */
@Component
public class Goods {

  public static final int NAME_MAX_LENGTH = 18;// 名称最大长度
  public static final int AMOUNT_MAX_VALUE = 1000000;// 可出售数量最大值
  public static final int ADDRESS_MAX_LENGTH = 50;// 地址最大长度
  public static final int SYNOPSIS_MAX_LENGTH = 50;// 简介最大长度

  public static final int NOT_SELLING = 0;// 暂停售卖
  public static final int IS_SELLING = 1;// 正在售卖

  private Long id;// id
  private String name;// 名称
  private String number;// 编号
  private Long goodsTypeId;// 货物类型id
  private int amount;// 可出售数量
  private int waitingQuantity = 0;// 待发货数量
  private BigDecimal price;// 售价
  private Long enterpriseId;// 企业id
  private int status;// 状态
  private String photo;// 图片
  private String address;// 发货地址
  private String synopsis;// 简介
  private GoodsType goodsType;// 分类
  private Enterprise enterprise;// 企业
  private String details;// 详情

  public String getDetails() {
    return details;
  }

  public void setDetails(String details) {
    this.details = details;
  }

  public Enterprise getEnterprise() {
    return enterprise;
  }

  public void setEnterprise(Enterprise enterprise) {
    this.enterprise = enterprise;
  }

  public GoodsType getGoodsType() {
    return goodsType;
  }

  public void setGoodsType(GoodsType goodsType) {
    this.goodsType = goodsType;
  }

  public String getSynopsis() {
    return synopsis;
  }

  public void setSynopsis(String synopsis) {
    this.synopsis = synopsis;
  }

  public String getPhoto() {
    return photo;
  }

  public void setPhoto(String photo) {
    this.photo = photo;
  }

  public Long getId() {
    return id;
  }

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

  public String getName() {
    return name;
  }

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

  public String getNumber() {
    return number;
  }

  public void setNumber(String number) {
    this.number = number;
  }

  public Long getGoodsTypeId() {
    return goodsTypeId;
  }

  public void setGoodsTypeId(Long goodsTypeId) {
    this.goodsTypeId = goodsTypeId;
  }

  public int getAmount() {
    return amount;
  }

  public void setAmount(int amount) {
    this.amount = amount;
  }

  public int getWaitingQuantity() {
    return waitingQuantity;
  }

  public void setWaitingQuantity(int waitingQuantity) {
    this.waitingQuantity = waitingQuantity;
  }

  public BigDecimal getPrice() {
    return price;
  }

  public void setPrice(BigDecimal price) {
    this.price = price;
  }

  public Long getEnterpriseId() {
    return enterpriseId;
  }

  public void setEnterpriseId(Long enterpriseId) {
    this.enterpriseId = enterpriseId;
  }

  public int getStatus() {
    return status;
  }

  public void setStatus(int status) {
    this.status = status;
  }

  public String getAddress() {
    return address;
  }

  public void setAddress(String address) {
    this.address = address;
  }

  @Override
  public String toString() {
    return "Goods [id=" + id + ", name=" + name + ", number=" + number + ", goodsTypeId=" + goodsTypeId
        + ", amount=" + amount + ", waitingQuantity=" + waitingQuantity + ", price=" + price + ", enterpriseId="
        + enterpriseId + ", status=" + status + ", photo=" + photo + ", address=" + address + ", synopsis="
        + synopsis + ", goodsType=" + goodsType + ", enterprise=" + enterprise + "]";
  }

}

  • 8.2 货物的controller控制器
package cn.javabs.logistics.controller.admin;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import cn.javabs.logistics.bean.LoginTypeEnum;
import cn.javabs.logistics.bean.PrefixEnum;
import cn.javabs.logistics.entity.admin.Enterprise;
import cn.javabs.logistics.entity.common.Goods;
import cn.javabs.logistics.page.admin.Page;
import cn.javabs.logistics.service.admin.EnterpriseService;
import cn.javabs.logistics.service.admin.GoodsTypeService;
import cn.javabs.logistics.service.common.GoodsService;
import cn.javabs.logistics.util.StringUtil;

import net.sf.json.JSONObject;

@Controller
@RequestMapping("/admin/goods")
public class GoodsController {

  @Autowired
  private GoodsService goodsService;

  @Autowired
  private GoodsTypeService goodsTypeService;

  @Autowired
  private EnterpriseService enterpriseService;

  /**
   * 列表页面
   *
   * @param model
   * @return
   */
  @RequestMapping(value = "/list", method = RequestMethod.GET)
  public ModelAndView list(ModelAndView model, HttpServletRequest request) {
    Map<String, Object> queryMap = new HashMap<String, Object>();
    model.addObject("goodsTypeList", goodsTypeService.findList(queryMap));
    Object loginType = request.getSession().getAttribute("loginType");
    if ((Integer) loginType == LoginTypeEnum.ENTERPRISE.getCode()) {
      Enterprise loginEnterprise = (Enterprise) request.getSession().getAttribute("admin");
      Enterprise enterprise = enterpriseService.findById(loginEnterprise.getId());
      model.addObject("address", enterprise.getAddress());
    } else {
      model.addObject("address", "");
    }
    model.setViewName("goods/list");
    return model;
  }

  /**
   * 获取列表
   *
   * @param page
   * @param name
   * @return
   */
  @RequestMapping(value = "/list", method = RequestMethod.POST)
  @ResponseBody
  public Map<String, Object> getList(Page page, HttpServletRequest request,
      @RequestParam(name = "name", required = false, defaultValue = "") String name,
      @RequestParam(name = "number", required = false, defaultValue = "") String number,
      @RequestParam(name = "goodsTypeId", required = false) Long goodsTypeId) {
    Map<String, Object> ret = new HashMap<>();
    Map<String, Object> queryMap = new HashMap<String, Object>();
    Object loginType = request.getSession().getAttribute("loginType");
    if ((Integer) loginType == LoginTypeEnum.ENTERPRISE.getCode()) {
      Enterprise enterprise = (Enterprise) request.getSession().getAttribute("admin");
      queryMap.put("enterpriseId", enterprise.getId());
    }
    queryMap.put("name", name);
    queryMap.put("number", number);
    queryMap.put("goodsTypeId", goodsTypeId);
    queryMap.put("offset", page.getOffset());
    queryMap.put("pageSize", page.getRows());
    ret.put("rows", goodsService.findList(queryMap));
    ret.put("total", goodsService.getTotal(queryMap));
    return ret;
  }

  /**
   * 添加货物
   * 
   * @param goods
   * @param request
   * @return
   */
  @RequestMapping(value = "/add", method = RequestMethod.POST)
  @ResponseBody
  public Map<String, String> add(Goods goods, HttpServletRequest request) {
    Map<String, String> ret = new HashMap<String, String>();
    Object loginType = request.getSession().getAttribute("loginType");
    if ((Integer) loginType != LoginTypeEnum.ENTERPRISE.getCode()) {
      ret.put("type", "error");
      ret.put("msg", "请登录企业用户!");
      return ret;
    }
    if (judge(goods, ret)) {
      return ret;
    }
    if (goods.getAmount() < 1 || goods.getAmount() > Goods.AMOUNT_MAX_VALUE) {
      ret.put("type", "error");
      ret.put("msg", "数量需在1~" + Goods.AMOUNT_MAX_VALUE + "之间!");
      return ret;
    }
    Enterprise enterprise = (Enterprise) request.getSession().getAttribute("admin");
    goods.setEnterpriseId(enterprise.getId());
    String number = StringUtil.generateSn(PrefixEnum.GOODS.getValue());
    goods.setNumber(number);
    if (goodsService.add(goods) <= 0) {
      ret.put("type", "error");
      ret.put("msg", "添加失败!");
      return ret;
    }
    ret.put("type", "success");
    ret.put("msg", "添加成功!");
    return ret;
  }

  /**
   * 编辑
   * 
   * @param goods
   * @return
   */
  @RequestMapping(value = "/edit", method = RequestMethod.POST)
  @ResponseBody
  public Map<String, String> edit(Goods goods, HttpServletRequest request) {
    Map<String, String> ret = new HashMap<String, String>();
    Object loginType = request.getSession().getAttribute("loginType");
    if ((Integer) loginType != LoginTypeEnum.ENTERPRISE.getCode()) {
      ret.put("type", "error");
      ret.put("msg", "请登录企业用户!");
      return ret;
    }
    if (judge(goods, ret)) {
      return ret;
    }
    if (goodsService.edit(goods) <= 0) {
      ret.put("type", "error");
      ret.put("msg", "编辑失败!");
      return ret;
    }
    ret.put("type", "success");
    ret.put("msg", "编辑成功!");
    return ret;
  }

  /**
   * 批量删除
   * 
   * @param ids
   * @return
   */
  @RequestMapping(value = "/delete", method = RequestMethod.POST)
  @ResponseBody
  public Map<String, String> delete(String ids) {
    Map<String, String> ret = new HashMap<String, String>();
    if (StringUtils.isEmpty(ids)) {
      ret.put("type", "error");
      ret.put("msg", "选择要删除的数据!");
      return ret;
    }
    if (ids.contains(",")) {
      ids = ids.substring(0, ids.length() - 1);
    }
    try {
      if (goodsService.delete(ids) <= 0) {
        ret.put("type", "error");
        ret.put("msg", "删除失败!");
        return ret;
      }
    } catch (Exception e) {
      ret.put("type", "error");
      ret.put("msg", "所选择数据中有数据存在关联数据,无法删除!");
      return ret;
    }

    ret.put("type", "success");
    ret.put("msg", "删除成功!");
    return ret;
  }

  // 判断
  private boolean judge(Goods goods, Map<String, String> ret) {
    if (goods == null) {
      ret.put("type", "error");
      ret.put("msg", "请填写正确的信息!");
      return true;
    }
    if (goods.getGoodsTypeId() == null) {
      ret.put("type", "error");
      ret.put("msg", "请选择分类!");
      return true;
    }
    if (StringUtils.isEmpty(goods.getPhoto())) {
      ret.put("type", "error");
      ret.put("msg", "请上传货物图片!");
      return true;
    }
    if (StringUtils.isEmpty(goods.getName())) {
      ret.put("type", "error");
      ret.put("msg", "请填写名称!");
      return true;
    }
    if (goods.getName().length() > Goods.NAME_MAX_LENGTH) {
      ret.put("type", "error");
      ret.put("msg", "名称最多为" + Goods.NAME_MAX_LENGTH + "位!");
      return true;
    }
    if (StringUtils.isEmpty(goods.getAddress())) {
      ret.put("type", "error");
      ret.put("msg", "请填写发货地址!");
      return true;
    }
    if (goods.getAddress().length() > Goods.ADDRESS_MAX_LENGTH) {
      ret.put("type", "error");
      ret.put("msg", "地址最多为" + Goods.ADDRESS_MAX_LENGTH + "位!");
      return true;
    }
    return false;
  }

  @RequestMapping(value = "/addAmount", method = RequestMethod.POST)
  @ResponseBody
  public Map<String, String> addAmount(Goods goods) {
    Map<String, String> ret = new HashMap<String, String>();
    if (goods == null) {
      ret.put("type", "error");
      ret.put("msg", "请填写正确的信息!");
      return ret;
    }
    if (goods.getAmount() < 1 || goods.getAmount() > Goods.AMOUNT_MAX_VALUE) {
      ret.put("type", "error");
      ret.put("msg", "数量需在1~" + Goods.AMOUNT_MAX_VALUE + "之间!");
      return ret;
    }
    Goods byId = goodsService.findById(goods.getId());
    byId.setAmount(byId.getAmount() + goods.getAmount());
    if (goodsService.addAmount(byId) <= 0) {
      ret.put("type", "error");
      ret.put("msg", "数量添加失败,请联系管理员!");
      return ret;
    }
    ret.put("type", "success");
    ret.put("msg", "添加成功!");
    return ret;
  }

  @RequestMapping(value = "/editDetails", method = RequestMethod.POST)
  @ResponseBody
  public Map<String, String> editDetails(Goods goods) {
    Map<String, String> ret = new HashMap<String, String>();
    if (goods == null) {
      ret.put("type", "error");
      ret.put("msg", "请填写正确的信息!");
      return ret;
    }
    if (goodsService.editDetails(goods) <= 0) {
      ret.put("type", "error");
      ret.put("msg", "详情操作失败!");
      return ret;
    }
    ret.put("type", "success");
    ret.put("msg", "操作成功!");
    return ret;
  }

  /**
   * 富文本kindedit的图片上传
   * 
   * @param request
   * @param response
   * @param imgFile
   * @throws IOException
   */
  @ResponseBody
  @RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
  public void uploadFile(HttpServletRequest request, HttpServletResponse response,
      @RequestParam("imgFile") MultipartFile imgFile) throws IOException {
    response.setContentType("application/json; charset=UTF-8");
    JSONObject obj = new JSONObject();
    /* Map obj = new HashMap<>(); */
    obj.put("error", 0);
    String massage = null;
    PrintWriter out = response.getWriter();
    // 判断文件类型是否是图片
    String originalFilename = imgFile.getOriginalFilename();
    // 获取文件后缀
    String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
    if (!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())) {
      massage = "图片格式不正确,请选择jpg,jpeg,gif,png格式的图片!";
      out.write("图片格式不正确,请选择jpg,jpeg,gif,png格式的图片!");
      obj.put("error", 1);
    }
    if (imgFile.getSize() / 1024 > 1024 * 1024 * 1024) {
      massage = "图片大小不能超过10M!";
      out.write("图片大小不能超过10M");
      obj.put("error", 1);
    }
    String savePath = request.getServletContext().getRealPath("/") + "/resources/upload/";
    // 准备保存文件
    File filePath = new File(savePath);
    if (!filePath.exists()) {
      // 若不存在文件夹,则创建一个文件夹
      filePath.mkdir();
    }

    String filename = new Date().getTime() + "." + suffix;
    try {
      imgFile.transferTo(new File(savePath + filename));
    } catch (IllegalStateException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    int error = (Integer) obj.get("error");
    if (error == 0) {
      obj.put("url", request.getServletContext().getContextPath() + "/resources/upload/" + filename);
    } else {
      obj.put("message", massage);
    }
    out.println(obj.toString());
  }

}

  • 8.3 货物的业务逻辑接口
package cn.javabs.logistics.service.common;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import cn.javabs.logistics.entity.common.Goods;
import cn.javabs.logistics.entity.common.Orders;
import cn.javabs.logistics.entity.common.Person;

/**
 * 货物Service
 */
@Service
public interface GoodsService {

  public Goods findById(Long id);// 根据id查找

  public int add(Goods goods);// 添加

  public int edit(Goods goods);// 编辑

  public int delete(String ids);// 删除

  public List<Goods> findList(Map<String, Object> queryMap);

  public int getTotal(Map<String, Object> queryMap);

  public int addAmount(Goods goods);// 添加货物数量

  public List<Goods> findSendingList(Map<String, Object> queryMap);// 查询出售中的列表

  public int findSendingTotal(Map<String, Object> queryMap);// 查询数量

  public int editDetails(Goods goods);// 编辑详情

  public int buyGoods(Goods goods, Person person, Orders orders);

}

  • 8.4 货物的业务逻辑接口的实现类
package cn.javabs.logistics.service.common.impl;

import java.util.List;
import java.util.Map;

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

import cn.javabs.logistics.dao.admin.EnterpriseDao;
import cn.javabs.logistics.dao.common.GoodsDao;
import cn.javabs.logistics.dao.common.OrdersDao;
import cn.javabs.logistics.dao.common.PersonDao;
import cn.javabs.logistics.entity.admin.Enterprise;
import cn.javabs.logistics.entity.common.Goods;
import cn.javabs.logistics.entity.common.Orders;
import cn.javabs.logistics.entity.common.Person;
import cn.javabs.logistics.service.common.GoodsService;

/**
 * 货物Service
 */
@Service
public class GoodsServiceImpl implements GoodsService {

  @Autowired
  private GoodsDao goodsDao;

  @Autowired
  private PersonDao personDao;

  @Autowired
  private EnterpriseDao enterpriseDao;

  @Autowired
  private OrdersDao ordersDao;

  @Override
  public Goods findById(Long id) {
    return goodsDao.findById(id);
  }

  @Override
  public int add(Goods goods) {
    return goodsDao.add(goods);
  }

  @Override
  public int edit(Goods goods) {
    return goodsDao.edit(goods);
  }

  @Override
  public int delete(String ids) {
    return goodsDao.delete(ids);
  }

  @Override
  public List<Goods> findList(Map<String, Object> queryMap) {
    return goodsDao.findList(queryMap);
  }

  @Override
  public int getTotal(Map<String, Object> queryMap) {
    return goodsDao.getTotal(queryMap);
  }

  @Override
  public int addAmount(Goods goods) {
    return goodsDao.addAmount(goods);
  }

  @Override
  public List<Goods> findSendingList(Map<String, Object> queryMap) {
    // TODO Auto-generated method stub
    return goodsDao.findSendingList(queryMap);
  }

  @Override
  public int findSendingTotal(Map<String, Object> queryMap) {
    return goodsDao.findSendingTotal(queryMap);
  }

  @Override
  public int editDetails(Goods goods) {
    // TODO Auto-generated method stub
    return goodsDao.editDetails(goods);
  }

  /**
   * 购买商品
   * 
   * @param goods
   * @param person
   * @param order
   * @return
   */
  @Override
  @Transactional
  public int buyGoods(Goods goods, Person person, Orders orders) {
    // 前台用户修改余额
    person.setBalance(person.getBalance().subtract(orders.getPrice()));
    personDao.editBalance(person);
    // 货物对应的企业修改余额
    Enterprise enterprise = enterpriseDao.findById(goods.getEnterpriseId());
    enterprise.setBalance(enterprise.getBalance().add(orders.getPrice()));
    enterpriseDao.editBalance(enterprise);
    ordersDao.add(orders);
    goods.setAmount(goods.getAmount() - orders.getQuantity());
    goods.setWaitingQuantity(goods.getWaitingQuantity() + orders.getQuantity());
    return goodsDao.editAmountAndWaitingQuantity(goods);
  }

}

  • 8.5 货物的数据持久层的接口
package cn.javabs.logistics.dao.common;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import cn.javabs.logistics.entity.common.Goods;

@Repository
public interface GoodsDao {

  public Goods findById(Long id);// 根据id查找

  public int add(Goods goods);// 添加

  public int edit(Goods goods);// 编辑

  public int delete(String ids);// 删除

  public List<Goods> findList(Map<String, Object> queryMap);

  public int getTotal(Map<String, Object> queryMap);

  public int addAmount(Goods goods);// 添加货物数量

  public List<Goods> findSendingList(Map<String, Object> queryMap);// 查询出售中货物

  public int findSendingTotal(Map<String, Object> queryMap);// 查询数量

  public int editDetails(Goods goods);// 编辑详情

  public int editAmountAndWaitingQuantity(Goods goods);// 购买后对数量进行修改

  public int editWaitingQuantity(Goods goods);// 修改待发货数量
}


  • 8.6 货物的数据持久层的接口的映射文件
<?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">
<mapper namespace="cn.javabs.logistics.dao.common.GoodsDao">
    <!-- 根据id查找 -->
    <select id="findById" parameterType="Long" resultType="Goods">
    select * from goods where id = #{id}
  </select>
    <!-- 添加-->
    <insert id="add" parameterType="Goods">
    insert into goods(id,name,number,goodsTypeId,amount,waitingQuantity,price,enterpriseId,status,photo,address,synopsis)
    values(null,#{name},#{number},#{goodsTypeId},#{amount},#{waitingQuantity},#{price},#{enterpriseId},#{status},#{photo},#{address},#{synopsis})
  </insert>
    <!-- 修改货物数量-->
    <update id="addAmount" parameterType="Goods">
    update goods set amount = #{amount} where id = #{id}
  </update>
  <!-- 修改货物待发货数量-->
    <update id="editWaitingQuantity" parameterType="Goods">
    update goods set waitingQuantity=#{waitingQuantity} where id = #{id}
  </update>
    <!-- 修改-->
    <update id="edit" parameterType="Goods">
    update goods set name = #{name},goodsTypeId=#{goodsTypeId},
    price = #{price},status= #{status},photo=#{photo},address=#{address},synopsis=#{synopsis} where id = #{id}
  </update>
    <!-- 修改-->
    <update id="editAmountAndWaitingQuantity" parameterType="Goods">
    update goods set amount=#{amount},waitingQuantity=#{waitingQuantity} where id = #{id}
  </update>
  <!-- 修改-->
    <update id="editDetails" parameterType="Goods">
    update goods set details=#{details} where id = #{id}
  </update>
    <!-- 删除 -->
    <delete id="delete" parameterType="String">
    delete from goods where id in(${value})
  </delete>
    <!-- 分页获取列表 -->
    <select id="findList" parameterType="Map" resultType="Goods">
        select * from goods where 1 = 1
        <if test="name != null">
            and name like '%${name}%'
        </if>
        <if test="goodsTypeId != null">
            and goodsTypeId = #{goodsTypeId}
        </if>
        <if test="number != null">
            and number like '%${number}%'
        </if>
        <if test="enterpriseId != null">
            and enterpriseId = #{enterpriseId}
        </if>
        <if test="offset != null and pageSize != null">
            limit #{offset},#{pageSize}
        </if>
    </select>
    <!-- 获取符合结果的总记录数 -->
    <select id="getTotal" parameterType="Map" resultType="Integer">
        select count(*) from goods where 1 = 1
        <if test="name != null">
            and name like '%${name}%'
        </if>
        <if test="enterpriseId != null">
            and enterpriseId = ${enterpriseId}
        </if>
    </select>

    <select id="findSendingTotal" parameterType="Map" resultType="Integer">
        select count(*)
        from goods where 1 = 1
        <if test="status != null">
            and status = #{status} 
        </if>
        <if test="name != null">
            and name like '%${name}%'
        </if>
        <if test="goodsTypeId != null">
            and goodsTypeId = #{goodsTypeId}
        </if>
    </select>

    <select id="findSendingList" parameterType="Map" resultMap="ResultMap">
        select g.*,t.name tName,e.username eUsername
        from (goods g left join goods_type t on g.goodsTypeId = t.id) 
        LEFT JOIN enterprise e on g.enterpriseId = e.id where 1 = 1
        <if test="status != null">
            and g.status = #{status}
        </if>
        <if test="name != null">
            and g.name like '%${name}%'
        </if>
        <if test="goodsTypeId != null">
            and g.goodsTypeId = #{goodsTypeId}
        </if>
        order by g.id desc
        <if test="offset != null and pageSize != null">
            limit #{offset},#{pageSize}
        </if>
    </select>
    
    <resultMap type="Goods" id="ResultMap">
      <id property="id" column="id"/>
    <result column="name" property="name"/>
    <result column="number" property="number"/>
    <result column="goodsTypeId" property="goodsTypeId"/>
    <result column="amount" property="amount"/>
    <result column="price" property="price"/>
    <result column="enterpriseId" property="enterpriseId"/>
    <result column="photo" property="photo"/>
    <result column="address" property="address"/>
    <result column="synopsis" property="synopsis"/>
    <association property="goodsType" column="goodsType"
    javaType="GoodsType" resultMap="goodsTypeResult"/>
    <association property="enterprise" column="enterprise"
    javaType="Enterprise" resultMap="enterpriseResult"/>
    </resultMap>
    
    <resultMap type="GoodsType" id="goodsTypeResult">
    <result column="tName" property="name"/>
  </resultMap>
  
  <resultMap type="Enterprise" id="enterpriseResult">
    <result column="eUsername" property="username"/>
    <result column="address" property="address"/>
  </resultMap>
</mapper>

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

目录
相关文章
|
7天前
|
前端开发 Java
基于SSM框架的手机商城项目
基于SSM框架的手机商城项目
11 0
|
7天前
|
前端开发 JavaScript Java
杨校老师项目之基于SSM大学生创新创业项目管理系统
杨校老师项目之基于SSM大学生创新创业项目管理系统
17 0
|
7天前
|
前端开发 Java 关系型数据库
杨校老师项目之基于SSM社区疫情防控人员访客登记报备平台
杨校老师项目之基于SSM社区疫情防控人员访客登记报备平台
11 0
|
20天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的大学生校园兼职附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的大学生校园兼职附带文章和源代码部署视频讲解等
42 8
|
20天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的停车场微信小程序附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的停车场微信小程序附带文章和源代码部署视频讲解等
28 6
|
20天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的使命召唤游戏助手附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的使命召唤游戏助手附带文章和源代码部署视频讲解等
26 5
基于ssm+vue.js+uniapp小程序的使命召唤游戏助手附带文章和源代码部署视频讲解等
|
20天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的移动端购物系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的移动端购物系统附带文章和源代码部署视频讲解等
26 4
基于ssm+vue.js+uniapp小程序的移动端购物系统附带文章和源代码部署视频讲解等
|
20天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的跑腿平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的跑腿平台附带文章和源代码部署视频讲解等
32 10
|
20天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的疫情期间学生请假与销假系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的疫情期间学生请假与销假系统附带文章和源代码部署视频讲解等
51 7
|
20天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的英语学习交流平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的英语学习交流平台附带文章和源代码部署视频讲解等
25 7