问题:如何优化创建和更新时间,自动生成时间?
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编辑POJOpackage 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 baseMapper2.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);
List
- list=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编辑POJOpackage 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);
}



