01.SpringBoot2.x 整合MybatisPlus + Lombok
1. 导入数据表
CREATE TABLE `address` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
`default_status` int(1) DEFAULT NULL COMMENT '是否默认收货地址:0->否;1->是',
`receive_name` varchar(64) DEFAULT NULL COMMENT '收发货人姓名',
`phone` varchar(64) DEFAULT NULL COMMENT '收货人电话',
`province` varchar(64) DEFAULT NULL COMMENT '省/直辖市',
`city` varchar(64) DEFAULT NULL COMMENT '市',
`region` varchar(64) DEFAULT NULL COMMENT '区',
`detail_address` varchar(200) DEFAULT NULL COMMENT '详细地址',
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='电商-公司收发货地址表';
CREATE TABLE `banner` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`img` varchar(524) DEFAULT NULL COMMENT '图片',
`url` varchar(524) DEFAULT NULL COMMENT '跳转地址',
`weight` int(11) DEFAULT NULL COMMENT '权重',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `banner` (`id`, `img`, `url`, `weight`)
VALUES
(1, 'https://file.xdclass.net/video/2020/alibabacloud/zx-lbt.jpeg', 'https://m.xdclass.net/#/member', 1),
(2, 'https://file.xdclass.net/video/%E5%AE%98%E7%BD%91%E8%BD%AE%E6%92%AD%E5%9B%BE/20%E5%B9%B4%E5%8F%8C11%E9%98%BF%E9%87%8C%E4%BA%91/fc-lbt.jpeg', 'https://www.aliyun.com/1111/pintuan-share?ptCode=MTcwMTY3MzEyMjc5MDU2MHx8MTE0fDE%3D&userCode=r5saexap', 3),
(3, 'https://file.xdclass.net/video/%E5%AE%98%E7%BD%91%E8%BD%AE%E6%92%AD%E5%9B%BE/20%E5%B9%B4%E5%8F%8C11%E9%98%BF%E9%87%8C%E4%BA%91/FAN-lbu-vip.jpeg', 'https://file.xdclass.net/video/%E5%AE%98%E7%BD%91%E8%BD%AE%E6%92%AD%E5%9B%BE/Nginx.jpeg', 2);
CREATE TABLE `coupon` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`category` varchar(11) DEFAULT NULL COMMENT '优惠卷类型[NEW_USER注册赠券,TASK任务卷,PROMOTION促销劵]',
`publish` varchar(11) DEFAULT NULL COMMENT '发布状态, PUBLISH发布,DRAFT草稿,OFFLINE下线',
`coupon_img` varchar(524) DEFAULT NULL COMMENT '优惠券图片',
`coupon_title` varchar(128) DEFAULT NULL COMMENT '优惠券标题',
`price` decimal(16,2) DEFAULT NULL COMMENT '抵扣价格',
`user_limit` int(11) DEFAULT NULL COMMENT '每人限制张数',
`start_time` datetime DEFAULT NULL COMMENT '优惠券开始有效时间',
`end_time` datetime DEFAULT NULL COMMENT '优惠券失效时间',
`publish_count` int(11) DEFAULT NULL COMMENT '优惠券总量',
`stock` int(11) DEFAULT '0' COMMENT '库存',
`add_one` int(11) DEFAULT NULL COMMENT '是否叠加0是不行,1是可以',
`create_time` datetime DEFAULT NULL,
`condition_price` decimal(16,2) DEFAULT NULL COMMENT '满多少才可以使用',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `product` (
`id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(128) DEFAULT NULL COMMENT '标题',
`cover_img` varchar(128) DEFAULT NULL COMMENT '封面图',
`detail` varchar(256) DEFAULT '' COMMENT '详情',
`old_price` decimal(16,2) DEFAULT NULL COMMENT '老价格',
`price` decimal(16,2) DEFAULT NULL COMMENT '新价格',
`stock` int(11) DEFAULT NULL COMMENT '库存',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`lock_stock` int(11) DEFAULT '0' COMMENT '锁定库存',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `product_order` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`out_trade_no` varchar(64) DEFAULT NULL COMMENT '订单唯一标识',
`state` varchar(11) DEFAULT NULL COMMENT 'NEW 未支付订单,PAY已经支付订单,CANCEL超时取消订单',
`create_time` datetime DEFAULT NULL COMMENT '订单生成时间',
`total_fee` decimal(16,2) DEFAULT NULL COMMENT '订单总金额',
`pay_fee` decimal(16,2) DEFAULT NULL COMMENT '订单实际支付价格',
`pay_type` varchar(64) DEFAULT NULL COMMENT '支付类型,微信-银行-支付宝',
`nickname` varchar(64) DEFAULT NULL COMMENT '昵称',
`head_img` varchar(524) DEFAULT NULL COMMENT '头像',
`user_id` int(11) DEFAULT NULL COMMENT '用户id',
`del` int(5) DEFAULT '0' COMMENT '0表示未删除,1表示已经删除',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`order_type` varchar(32) DEFAULT NULL COMMENT '订单类型 DAILY普通单,PROMOTION促销订单',
`receiver_address` varchar(1024) DEFAULT NULL COMMENT '收货地址 json存储',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `product_order_item` (
`id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
`product_order_id` bigint(11) DEFAULT NULL COMMENT '订单号',
`out_trade_no` varchar(32) DEFAULT NULL,
`product_id` bigint(11) DEFAULT NULL COMMENT '产品id',
`product_name` varchar(128) DEFAULT NULL COMMENT '商品名称',
`product_img` varchar(524) DEFAULT NULL COMMENT '商品图片',
`buy_num` int(11) DEFAULT NULL COMMENT '购买数量',
`create_time` datetime DEFAULT NULL,
`total_fee` decimal(16,2) DEFAULT NULL COMMENT '购物项商品总价格',
`pay_fee` decimal(16,0) DEFAULT NULL COMMENT '购物项商品支付总价格',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `user` (
`id` bigint(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL COMMENT '昵称',
`pwd` varchar(124) DEFAULT NULL COMMENT '密码',
`head_img` varchar(524) DEFAULT NULL COMMENT '头像',
`slogan` varchar(524) DEFAULT NULL COMMENT '用户签名',
`sex` tinyint(2) DEFAULT '1' COMMENT '0表示女,1表示男',
`points` int(10) DEFAULT '0' COMMENT '积分',
`create_time` datetime DEFAULT NULL,
`mail` varchar(64) DEFAULT NULL COMMENT '邮箱',
`secret` varchar(12) DEFAULT NULL COMMENT '盐,用于个人敏感信息处理',
PRIMARY KEY (`id`),
UNIQUE KEY `mail_idx` (`mail`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 使用idea创建springboot项目
略
3. 导入相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
<scope>provided</scope>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis plus和springboot整合-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
4. 增加数据库配置
server.port=8081
#==============================数据库相关配置========================================
spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://39.97.253.89:3306/xd_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username =root
spring.datasource.password =
5. 增加包结构和扫描包路径
启动类上加mapper包扫描路径:
@MapperScan("com.lzh.xd_shop.mapper")
6. 编写统一接口返回协议-JsonData
package com.lzh.xd_shop.utils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author:kaiyang.cui
* @Package:com.lzh.xd_shop.utils
* @Project:xd_shop
* @name:JsonData
* @Date:2023/4/1 下午3:35
* @Filename:JsonData
* @Description:JsonData统一接口返回协议
* @Version:1.0
*/
@Data
@AllArgsConstructor //会生成一个包含所有变量
@NoArgsConstructor //生成一个无参数的构造方法
public class JsonData {
/**
* 状态码 0 表示成功,1表示处理中,-1表示失败
*/
private Integer code;
/**
* 返回数据
*/
private Object data;
/**
* 描述
*/
private String msg;
/**
* 成功,传入数据
* @return
*/
public static JsonData buildSuccess() {
return new JsonData(0, null, null);
}
/**
* 成功,传入数据
* @param data
* @return
*/
public static JsonData buildSuccess(Object data) {
return new JsonData(0, data, null);
}
/**
* 失败,传入描述信息
* @param msg
* @return
*/
public static JsonData buildError(String msg) {
return new JsonData(-1, null, msg);
}
/**
* 失败,传入描述信息,状态码
* @param msg
* @param code
* @return
*/
public static JsonData buildError(String msg, Integer code) {
return new JsonData(code, null, msg);
}
}
7. 编写实体类
@Data
@TableName("banner") // 表名映射,mybatisplus必须加
public class BannerDO {
private Integer id;
private String img;
private String url;
private Integer weight;
}
8. 开发controller-service-mapper层
mapper层
public interface BannerMapper extends BaseMapper<BannerDO> {
}
service 层
package com.lzh.xd_shop.service;
import com.lzh.xd_shop.model.BannerDO;
import java.util.List;
/**
* @Author:kaiyang.cui
* @Package:com.lzh.xd_shop.service
* @Project:xd_shop
* @name:BannerService
* @Date:2023/4/1 下午3:53
* @Filename:BannerService
* @Description:BannerService
* @Version:1.0
*/
public interface BannerService {
List<BannerDO> listAllBanner();
}
package com.lzh.xd_shop.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lzh.xd_shop.mapper.BannerMapper;
import com.lzh.xd_shop.model.BannerDO;
import com.lzh.xd_shop.service.BannerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author:kaiyang.cui
* @Package:com.lzh.xd_shop.service.impl
* @Project:xd_shop
* @name:BannerServiceImpl
* @Date:2023/4/1 下午3:53
* @Filename:BannerServiceImpl
* @Description:BannerServiceImpl
* @Version:1.0
*/
@Service
public class BannerServiceImpl implements BannerService {
@Autowired
private BannerMapper bannerMapper;
@Override
public List<BannerDO> listAllBanner() {
return bannerMapper.selectList(new QueryWrapper<>());
}
}
controller层
package com.lzh.xd_shop.controller;
import com.lzh.xd_shop.model.BannerDO;
import com.lzh.xd_shop.service.BannerService;
import com.lzh.xd_shop.utils.JsonData;
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.RestController;
import java.util.List;
/**
* @Author:kaiyang.cui
* @Package:com.lzh.xd_shop.controller
* @Project:xd_shop
* @name:BannerController
* @Date:2023/4/1 下午3:56
* @Filename:BannerController
* @Description:BannerController
* @Version:1.0
*/
@RestController
@RequestMapping("/api/v1/banner")
public class BannerController {
@Autowired
private BannerService bannerService;
@RequestMapping("/listAllBanner")
public JsonData listAllBanner(){
List<BannerDO> list = bannerService.listAllBanner();
return JsonData.buildSuccess(list );
}
}
9. 跑
http://localhost:8081/api/v1/banner/listAllBanner
浏览器: