杨校老师项目之基于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>

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

目录
相关文章
|
3月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
2月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
2月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
34 0
|
3月前
|
SQL Java 应用服务中间件
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
这篇文章是关于如何使用SSM框架搭建图书商城管理系统的教程,包括完整过程介绍、常见问题解答和售后服务,提供了项目地址、运行环境配置、效果图展示以及运行代码的步骤。
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
|
4月前
|
存储 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(2)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
63 1
|
4月前
|
安全 数据挖掘 测试技术
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)(2)
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)
66 0
|
4月前
|
Java 关系型数据库 MySQL
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)(1)
基于SSM+Vue的家居商城系统(源码+部署说明+演示视频)
61 0
|
4月前
|
Java 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(1)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
59 0
|
5月前
|
前端开发 JavaScript Java
杨校老师项目之基于SSM大学生创新创业项目管理系统
杨校老师项目之基于SSM大学生创新创业项目管理系统
82 0
|
5月前
|
搜索推荐 JavaScript Java
计算机Java项目|基于SSM的个性化商铺系统
计算机Java项目|基于SSM的个性化商铺系统