栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

京淘项目——商品列表实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

京淘项目——商品列表实现

1.MP的自动填充功能

问题:如何优化创建和更新时间,自动生成时间?

1.1思路

新增数据时,填充创建+修改时间

修改数据时,填充修改时间

1.2编辑POJO对象

使用@TableField注解

实现代码

package com.jt.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

@Data
@Accessors(chain=true)
public class basePojo implements Serializable{
	//新增操作时自动填充
	@TableField(fill = FieldFill.INSERT)
	private Date created;	//表示入库时需要赋值
	//修改操作时自动填充
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private Date updated;	//表示入库/更新时赋值.
}

enum枚举类型  其中只有属性,全大写,选择

1.3编辑配置文件

 位置:

                                                                             

实现代码:

package com.jt.config;

import com.baomidou.mybatisplus.core.handlers.metaObjectHandler;
import org.apache.ibatis.reflection.metaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
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);
    }
}
 1.4Service层修改
@Override
    @Transactional
    public void saveItemCat(ItemCat itemCat) {
        itemCat.setStatus(true);
        itemCatMapper.insert(itemCat);
    }
实现效果

新增商品分类信息,创建和修改时间已更新 

2.商品列表实现 2.1表结构

   

数据库表内的price扩大了100倍

 2.2编辑POJO
package com.jt.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;


@Data
@Accessors(chain = true)
@TableName("item")
public class Item extends basePojo{
    @TableId(type = IdType.AUTO)
    private Integer id;         //商品Id号
    private String title;       //商品标题信息
    private String sellPoint;   //卖点信息
    private Integer price;      //商品价格
    private Integer num;        //商品数量
    private String images;       //商品图片
    private Integer itemCatId;  //商品分类ID号
    private Boolean status;     //状态信息    0 下架 1 上架

}
2.2编辑Mapper层
package com.jt.mapper;

import com.baomidou.mybatisplus.core.mapper.baseMapper;
import com.jt.pojo.Item;

public interface ItemMapper extends baseMapper {

}
 2.3编辑Controller层
    @GetMapping("/getItemList")
    public SysResult getItemList(PageResult pageResult){
        pageResult=itemService.getItemList(pageResult);
        return SysResult.success(pageResult);
    }
2.4编辑Service层

分页对象四个属性有用(页数/条数/总数/记录)

 @Autowired
    private ItemMapper itemMapper;

    @Override
    public PageResult getItemList(PageResult pageResult) {
        //获取查询的属性
        String query=pageResult.getQuery();
        //判断query是否有值
        boolean flag= StringUtils.hasLength(query);
        QueryWrapper queryWrapper=new QueryWrapper();
        //条件构造器构造where title like %% 的sql
        queryWrapper.like(flag,"title",query);
        //编辑Mp的分页对象, 四个属性有用(页数/条数/总数/记录) 传递了页数/条数
        IPage page=new Page<>(pageResult.getPageNum(),pageResult.getPageSize());
        long total=page.getTotal();
        page=itemMapper.selectPage(page, queryWrapper);
        Listlist=page.getRecords();
        //返回pageResult对象 并且设置total与rows数据
        return pageResult.setTotal(total).setRows(list);
    }

实现效果 

此时没有实现分页效果,如何实现?? 

2.5MP实现分类配置类 2.5.1新建配置类

2.5.2编辑配置类
package com.jt.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration//标识这是一个配置类
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MARIADB));
        return interceptor;
    }
}
 2.5.3实现效果

3.商品新增页面跳转

实现页面

4.商品新增 4.1业务接口

业务接口文档

4.2封装VO对象

package com.jt.vo;

import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;


@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class ItemVO {  //该对象封装商品所有的参数信息
    private Item item;
    private ItemDesc itemDesc;
}
 4.3编辑Controller层
@PostMapping("/saveItem")
    public SysResult saveItem(@RequestBody ItemVO itemVO){
        itemService.saveItem(itemVO);
        return SysResult.success();
    }
4.4Service层
@Override
    public void saveItem(ItemVO itemVO) {
        Item item=itemVO.getItem();
        item.setStatus(true);
        itemMapper.insert(item);
    }
5.富文本编辑器

所见即所得

6.实现商品详情入库 6.1表结构

两张表的id是一一对应的关系,一个商品对应一个详情,一个详情对应一个商品

item.id=item_desc.id                                                                                                           

6.2编辑POJO
package com.jt.pojo;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;


@Data
@Accessors(chain = true)
@TableName("item_desc")
public class ItemDesc extends basePojo{
    @TableId()//不可自增  因为item.id=itemDesc.id
    private Integer id;
    private String itemDesc;

}
6.3编辑Service层
@Autowired
    private ItemMapper itemMapper;
    @Autowired
    private ItemDescMapper itemDescMapper;  

@Override
    @Transactional
    public void saveItem(ItemVO itemVO) {
        //实现商品数据入库
        Item item=itemVO.getItem();
        item.setStatus(true);
        //MP原则:入库之后自动回显数据  自动返回id
        itemMapper.insert(item);
        //实现详情入库itemDesc
        ItemDesc itemDesc=itemVO.getItemDesc();
        itemDesc.setId(item.getId());
        itemDescMapper.insert(itemDesc);
    }
7.关联删除 Controller层
    @DeleteMapping("/deleteItemById")
    public SysResult deleteItemById(Integer id){
        itemService.deleteItemById(id);
        return SysResult.success();
    }
Service层
@Override
    @Transactional
    public void updateItemStatus(Item item) {
        Date date=new Date();
        item.setUpdated(date);
        itemMapper.updateById(item);
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324527.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号