项目总结day06

1 后台商品新增、更新和删除

1.1 新增

1.1.1 封装SysResult

说明:在jt-common中添加系统返回值VO对象

package com.jt.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SysResult {
    private Integer status;     //200成功,201失败
    private String msg;         //服务器返回提示信息
    private Object data;        //服务器数据

    //1.编辑失败方法
    public static SysResult fail(){
        return new SysResult(201,"服务器调用失败",null);
    }

    //2.编辑成功方法
    public static SysResult success(){
        return new SysResult(200,"服务器调用成功",null);
    }
    public static SysResult success(Object data){
        return new SysResult(200,"服务器调用成功",data);
    }
    public static SysResult success(String msg,Object data){
        return new SysResult(200,msg,data);
    }
}

1.1.2 编辑ItemController

/*
	* 业务:完成商品的入库操作
	* 注意事项:1.方法可能会出错,添加try-catch
	*          2.新增商品的状态信息为1
	*          3.入库时完成时间的记录
	* url:http://localhost:8091/item/save
	* 请求参数:form表单,对象接受
	* 返回值:系统界别的vo对象
	* */
	@RequestMapping("/save")
	public SysResult saveItem(Item item){
		//方式一
		/*try {
			itemService.saveItem(item);
			return SysResult.success();
		}catch (Exception e){
			e.printStackTrace();
			return SysResult.fail();
		}*/
		//方式二:全局异常处理
		itemService.saveItem(item);
		return SysResult.success();
	}

1.1.3 编辑ItemServiceImpl

@Override
	public void saveItem(Item item) {
		item.setStatus(1)	//默认是正常状态
		    .setCreated(new Date())
			.setUpdated(item.getCreated());
		itemMapper.insert(item);
	}

1.1.4 设置全局异常处理机制

在jt-common中 添加全局异常处理机制

package com.jt.aop;

import com.jt.vo.SysResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice  //定义全局异常处理
public class SystemException {

    //遇到运行时异常时方法执行.
    @ExceptionHandler({RuntimeException.class})
    public Object fail(Exception e){
        e.printStackTrace();    //输出异常信息.
        return SysResult.fail();
    }
}

1.2 自动填充时间功能

1.2.1 业务需求

例如更新时间/创建时间,每个业务操作时都需要更新相关数据,能否将数据进行优化,简化程序调用。
在这里插入图片描述

1.2.2 指定填充属性

在这里插入图片描述

1.2.3 编辑配置类

在jt-common中 编辑配置类,实现自动填充功能

package com.jt.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component  //将对象交给spring容器管理
public class MyMetaObjectHandler implements MetaObjectHandler {

    //完成入库操作自动赋值
    @Override
    public void insertFill(MetaObject metaObject) {
        Date date = new Date();
        this.setFieldValByName("created",date,metaObject);
        this.setFieldValByName("updated",date,metaObject);
    }

    //完成更新操作自动赋值
    @Override
    public void updateFill(MetaObject metaObject) {

        this.setFieldValByName("updated",new Date(),metaObject);
    }
}

2 修改更新操作

2.1 实现修改页面分类信息回显

2.1.1 显示分类名称

在这里插入图片描述

2.1.2 显示分类名称

在这里插入图片描述

2.2 实现更新

2.2.1 编辑ItemController

/*
	* 业务:更新商品信息
	* url:http://localhost:8091/item/update
	* 请求参数:form表单
	* 返回值:SysResult
	* */

	//更新
	@RequestMapping("/update")
	public SysResult updateItem(Item item){
		itemService.updateItem(item);
		return SysResult.success();
	}

2.2.2 编辑ItemServiceImpl

//一般更新操作都是根据主键更新
	//Sql: update tb_item set titel=#{xxxx},xx,x,x,x,x, where id=#{xxx}
	@Override
	public void updateItem(Item item) {
		//根据对象中不为null的元素充当set条件
		itemMapper.updateById(item);
	}

3 商品删除操作

3.1 编辑ItemController

/*
	* 业务:删除选中的商品
	* url:http://localhost:8091/item/delete
	* 请求参数:商品ids
	* 返回值:SysResult
	*
	* */
	//删除
	@RequestMapping("/delete")
	public SysResult deleteItem(Long[] ids){
		itemService.deleteItem(ids);
		return SysResult.success();
	}

3.2 编辑ItemServiceImpl

	@Override
	public void deleteItem(Long[] ids) {
		//方法一
//		List<Long> idList = new ArrayList<>();
//		for(Long id:ids){
//			idList.add(id);
//		}
//		itemMapper.deleteBatchIds(idList);

		//方法二:
//		List<Long> longList = Arrays.asList(ids);
//		itemMapper.deleteBatchIds(longList);

		//方法二(手动sql):
		itemMapper.deleteItem(ids);
	}

3.3 编辑ItemMapper

//根据ids删除商品信息
    void deleteItem(Long[] ids);
<?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="com.jt.mapper.ItemMapper">
	<!--Mybatis数据传参的原理:
			规则: Mybatis只能接收单值传参!!!
				 如果有多个数据需要传值,则需要将多值封装为单值
			方式:
				1.利用对象传参
				2.利用数组传参
				3.利用Map集合传参
			集合的写法:
				数据类型是数组  		collection="array"
				数据类型是list集合    collection="list"
				数据类型是Map集合     collection="map的key"

		ids=100,101,102
		collection: 获取传递集合的key
		open="集合遍历前缀"
		close="集合遍历后缀"
		separator="分隔符"
		item="当前遍历的对象"
		-->
	<!--根据ids删除商品信息-->
	<delete id="deleteItem">
		delete from tb_item where id in
		<foreach collection="array"
				 open="("
				close=")"
				separator=","
				item="id">
			#{id}
		</foreach>
	</delete>
</mapper>

4 实现商品上架/下架操作

4.1 业务需求

在这里插入图片描述
需求: 能否利用一个方法实现上架/下架操作???
http://localhost:8091/item/updateStatus/2 下架操作 status=2
http://localhost:8091/item/updateStatus/1 上架操作 status=1

4.2 编辑ItemController

/*
	 *业务需求:实现商品的上架/下架
	 * url: /item/updateStatus/1
	 * 请求参数:状态码信息和ids
	 * 返回值:SysResult对象
	  */
	@RequestMapping("/updateStatus/{status}")
	public SysResult updateStatus(@PathVariable Integer status, Long... ids){
		itemService.updateStatus(status,ids);
		return SysResult.success();
	}

4.2 编辑ItemServiceImpl

//商品的上下架
	@Override
	public void updateStatus(Integer status, Long[] ids) {
		//方法一
		/*Item item = new Item();
		item.setStatus(status);
		UpdateWrapper updateWrapper = new UpdateWrapper();
		updateWrapper.in("id",Arrays.asList(ids));
		itemMapper.update(item,updateWrapper);
		*/

		//方法二(手动sql)
		itemMapper.updateStatus(status,ids);

	}

4.3 编辑ItemMapper

//商品的上下架
    void updateStatus(Integer status, Long[] ids);
<?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="com.jt.mapper.ItemMapper">


	<!--商品的上下架-->
	<update id="updateStatus">
		update tb_item set status=#{status},updated=now() where id in
		<foreach collection="ids"
				 open="("
				 close=")"
				 separator=","
				 item="id">
			#{id}
		</foreach>
	</update>
</mapper>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值