## 配置application.properties文件,但这里我将文件改成yml格式 #配置数据库链接的四要素 # mysql驱动 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #数据库的url spring.datasource.url=jdbc:mysql://localhost:3306/base_framework #数据库用户名 spring.datasource.username=数据库用户名 #数据库密码 spring.datasource.password=数据库密码 #为指定包下的类,设置别名 mybatis.type-aliases-package=com.itheima.pojo #开启驼峰命名映射 mybatis.configuration.map-underscore-to-camel-case=true #指定控制台输出日志 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl实体类
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class Dish {
private Integer id;
private String name;//菜品名称
private Integer categoryId; //菜品分类id
private double price; //菜品价格
private String image; //图片
private String description; //描述信息
private Integer status; //0 停售 1 起售
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
创建分页条件查询的实体类
package com.itheima.domain; import lombok.Data; import java.util.List; @Data public class PageBean定义通用的返回值为R{ private List rows;//当前页数据 private Long totalCount;//总记录数 }
package com.itheima.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class R {
private Integer code;
private String msg;
private Object data;
public static R success(){
return new R(200,"success",null);
}
public static R success(Object data){
return new R(200,"msg",data);
}
public static R error(String msg){
return new R(500,msg,null);
}
}
mapper层代码
package com.itheima.mapper;
import com.itheima.domain.Dish;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface DishMapper {
@Select("select * from dish;")
List findAll();
@Select("select * from dish where id = #{id};")
Dish selectById(Integer id);
@Insert("insert into dish (name, category_id, price, image, description, status, create_time, update_time) " +
"values (#{name},n" +
"#{categoryId}, n" +
"#{price},n" +
"#{image},n" +
"#{description},n" +
"#{status},n" +
"#{createTime},n" +
"#{updateTime});")
void insertAll(Dish dish);
@Delete("delete from dish where id=#{id};")
void deleteAll(Integer id);
@Update("update dish set status = #{status} where id=#{id};")
void updateStatus(Integer id, Integer status);
@Update("update dish set " +
"status = #{status}," +
"name = #{name}," +
"category_id = #{categoryId}," +
"price = #{price}," +
"description = #{description}," +
"update_time = #{updateTime}," +
"image = #{image} where id = #{id};")
void update(Dish dish);
void deleteByIds(Integer[] ids);
List findPage(Dish dish);
}
批量删除和分页查询条件
使用了动态sql。并在Resources下创建和mapper一样的同包同名,并且其中的nameplace是mapper下
代码如下:
service层delete from dish id in #{id}
创建com.itheima.service 包,定义 DishService接口
package com.itheima.service;
import com.itheima.domain.Dish;
import com.itheima.domain.PageBean;
import java.util.List;
public interface DishService {
List findAll();
Dish selectById(Integer id);
void insertAll(Dish dish);
void deleteById(Integer id);
void updateStatus(Integer id, Integer status);
void update(Dish dish);
void deleteByIds(Integer[] id);
PageBean findPage(Integer currentPage,Integer pageSize,Dish dish);
}
serviceimpl层
创建`com.itheima.service.impl` 包,定义 `DishServiceImpl`类,实现 `DishService`接口,注入`DishMapper`
package com.itheima.service.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.anno.Log;
import com.itheima.domain.Dish;
import com.itheima.domain.PageBean;
import com.itheima.mapper.DishMapper;
import com.itheima.service.DishService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class DishServiceImpl implements DishService {
@Autowired
private DishMapper dishMapper;
@Override
public List findAll() {
return dishMapper.findAll();
}
@Override
public Dish selectById(Integer id) {
return dishMapper.selectById(id);
}
@Log
@Override
public void insertAll(Dish dish) {
//设置修改时间
dish.setUpdateTime(LocalDateTime.now());
//设置创建时间
dish.setCreateTime(LocalDateTime.now());
//设置状态
dish.setStatus(1);
dishMapper.insertAll(dish);
}
@Log
@Override
public void deleteById(Integer id) {
dishMapper.deleteAll(id);
}
@Log
@Override
public void updateStatus(Integer id, Integer status) {
dishMapper.updateStatus(id, status);
}
@Log
@Override
public void update(Dish dish) {
//1. 设置更新时间
dish.setUpdateTime(LocalDateTime.now());
//2. 调用mapper
dishMapper.update(dish);
}
@Log
@Override
public void deleteByIds(Integer[] ids) {
dishMapper.deleteByIds(ids);
}
@Override
public PageBean findPage(Integer currentPage, Integer pageSize, Dish dish) {
PageHelper.startPage(currentPage, pageSize);
Page page = (Page) dishMapper.findPage(dish);
PageBean pageBean = new PageBean<>();
pageBean.setTotalCount(page.getTotal());
pageBean.setRows(page.getResult());
return pageBean;
}
}
controller层代码:
package com.itheima.controller;
import com.itheima.domain.Dish;
import com.itheima.domain.PageBean;
import com.itheima.domain.R;
import com.itheima.service.DishService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/dish")
public class DishController {
@Autowired
private DishService dishService;
@GetMapping("/findAll")
public R findAll() {
List dish = dishService.findAll();
return R.success(dish);
}
@GetMapping("/{id}")
public R selectById(@PathVariable Integer id){
Dish dish = dishService.selectById(id);
return R.success(dish);
}
@PostMapping("/insertAll")
public R insertAll(@RequestBody Dish dish){
dishService.insertAll(dish);
return R.success();
}
@PutMapping("/{id}/{status}")
public R updateStatus(@PathVariable Integer id, @PathVariable Integer status) {
dishService.updateStatus(id, status);
return R.success();
}
@PutMapping
public R update(@RequestBody Dish dish){
dishService.update(dish);
return R.success();
}
@DeleteMapping("/{ids}")
public R deleteByIds(@PathVariable Integer[] ids){
dishService.deleteByIds(ids);
return R.success();
}
@PostMapping("/findPage")
public R findPage(Integer currentPage,Integer pageSize,@RequestBody Dish dish){
PageBean page = dishService.findPage(currentPage, pageSize, dish);
return R.success(page);
}
}
mysql:数据
create database base_framework default charset utf8mb4; use base_framework; drop table if exists dish; CREATE TABLE `dish` ( `id` int PRIMARY KEY AUTO_INCREMENT COMMENT 'ID', `name` varchar(20) DEFAULT NULL COMMENT '名称', `category_id` int DEFAULT NULL COMMENT '分类ID', `price` double(10,2) DEFAULT NULL COMMENT '价格', `image` varchar(100) DEFAULT NULL COMMENT '图片名称', `description` varchar(200) DEFAULT NULL COMMENT '描述', `status` tinyint NOT NULL COMMENT '状态, 1:启售, 0:停售', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间' ) COMMENT='菜品表'; INSERT INTO `dish` VALUES (1,'辣子鸡',1,78.00,'f966a38e-0780-40be-bb52-5699d13cb3d9.jpg','来自鲜嫩美味的小鸡,值得一尝',1,'2022-05-27 09:38:43','2022-05-27 09:38:43'); INSERT INTO `dish` VALUES (2,'毛氏红烧肉',1,68.00,'0a3b3288-3446-4420-bbff-f263d0c02d8e.jpg','毛氏红烧肉毛氏红烧肉,确定不来一份?',1,'2022-05-27 09:40:19','2022-05-27 09:40:19'); INSERT INTO `dish` VALUES (3,'组庵鱼翅',1,48.00,'740c79ce-af29-41b8-b78d-5f49c96e38c4.jpg','组庵鱼翅,看图足以表明好吃程度',1,'2022-05-27 09:41:19','2022-05-27 09:41:19'); INSERT INTO `dish` VALUES (4,'霸王别姬',1,128.00,'057dd338-e487-4bbc-a74c-0384c44a9ca3.jpg','还有什么比霸王别姬更美味的呢?',1,'2022-05-27 09:43:08','2022-05-27 09:43:08'); INSERT INTO `dish` VALUES (5,'全家福',1,118.00,'a53a4e6a-3b83-4044-87f9-9d49b30a8fdc.jpg','别光吃肉啦,来份全家福吧,让你长寿又美味',1,'2022-05-27 09:44:08','2022-05-27 09:44:08'); INSERT INTO `dish` VALUES (6,'邵阳猪血丸子',1,138.00,'2a50628e-7758-4c51-9fbb-d37c61cdacad.jpg','看,美味不?来嘛来嘛,这才是最爱吖',1,'2022-05-27 09:45:12','2022-05-27 09:45:12'); INSERT INTO `dish` VALUES (7,'口味蛇',2,168.00,'0f4bd884-dc9c-4cf9-b59e-7d5958fec3dd.jpg','爬行界的扛把子,东兴-口味蛇,让你欲罢不能',1,'2022-05-27 09:46:23','2022-05-27 09:46:23'); INSERT INTO `dish` VALUES (8,'辣子鸡丁',2,88.00,'ef2b73f2-75d1-4d3a-beea-22da0e1421bd.jpg','辣子鸡丁,辣子鸡丁,永远的魂',1,'2022-05-27 09:49:16','2022-05-27 09:49:16'); INSERT INTO `dish` VALUES (9,'麻辣兔头',2,198.00,'2a2e9d66-b41d-4645-87bd-95f2cfeed218.jpg','麻辣兔头的详细制作,麻辣鲜香,色泽红润,回味悠长',1,'2022-05-27 09:52:24','2022-05-27 09:52:24'); INSERT INTO `dish` VALUES (10,'蒜泥白肉',2,98.00,'d2f61d70-ac85-4529-9b74-6d9a2255c6d7.jpg','多么的有食欲啊',1,'2022-05-27 09:54:30','2022-05-27 09:54:30'); INSERT INTO `dish` VALUES (11,'鱼香肉丝',2,38.00,'8dcfda14-5712-4d28-82f7-ae905b3c2308.jpg','鱼香肉丝简直就是我们童年回忆的一道经典菜,上学的时候点个鱼香肉丝盖饭坐在宿舍床上看着肥皂剧,绝了!现在完美复刻一下上学的时候感觉',1,'2022-05-27 09:55:13','2022-05-27 09:55:13'); INSERT INTO `dish` VALUES (12,'麻辣水煮鱼',2,148.00,'1fdbfbf3-1d86-4b29-a3fc-46345852f2f8.jpg','鱼片是买的切好的鱼片,放几个虾,增加味道',1,'2022-05-27 09:58:15','2022-05-27 09:58:15'); INSERT INTO `dish` VALUES (13,'鱼香炒鸡蛋',2,20.00,'0f252364-a561-4e8d-8065-9a6797a6b1d3.jpg','鱼香菜也是川味的特色。里面没有鱼却鱼香味',1,'2022-05-27 09:59:06','2022-05-27 09:59:06'); INSERT INTO `dish` VALUES (14,'脆皮烧鹅',3,128.00,'e476f679-5c15-436b-87fa-8c4e9644bf33.jpeg','“广东烤鸭美而香,却胜烧鹅说古冈(今新会),燕瘦环肥各佳妙,君休偏重便宜坊”,可见烧鹅与烧鸭在粤菜之中已早负盛名。作为广州最普遍和最受欢迎的烧烤肉食,以它的“色泽金红,皮脆肉嫩,味香可口”的特色,在省城各大街小巷的烧卤店随处可见。',1,'2022-05-27 10:20:27','2022-05-27 10:20:27'); INSERT INTO `dish` VALUES (15,'白切鸡',3,66.00,'9ec6fc2d-50d2-422e-b954-de87dcd04198.jpeg','白切鸡是一道色香味俱全的特色传统名肴,又叫白斩鸡,是粤菜系鸡肴中的一种,始于清代的民间。白切鸡通常选用细骨农家鸡与沙姜、蒜茸等食材,慢火煮浸白切鸡皮爽肉滑,清淡鲜美。著名的泮溪酒家白切鸡,曾获商业部优质产品金鼎奖。湛江白切鸡更是驰名粤港澳。粤菜厨坛中,鸡的菜式有200余款之多,而最为人常食不厌的正是白切鸡,深受食家青睐。',1,'2022-05-27 10:21:48','2022-05-27 10:21:48');这里只是后端代码的增删改查的编写。。。。。。。。。



