基于springboo商品管理系统

商品管理系统

一、 项目简介

本系统是基于springboot+thymleaf+MybatisPlus+Mysql实现的商品管理。主要实现的功能有用户登录注册,管理员权限下的用户管理,商品管理

环境、依赖:
  JDK 1.8 开发环境
  SpringBoot 2.3 核心框架
  SpringMVC 视图框架
  MyBatisPlus 持久层框架
  swagger2 生成在线的接口文档
  JSR303 数据校验
  SLF4J、Logback 日志管理
  MySQL 8.0.18 数据库

数据库准备:

复制代码
【mysql安装、使用 -- windows 参考:】
    https://www.cnblogs.com/l-y-h/p/11700113.html

【mysql安装、使用 -- Linux 参考:】
    https://www.cnblogs.com/l-y-h/p/12576633.html

【docker 安装 mysql 8.0.18 -- Linux 参考:】
    https://www.cnblogs.com/l-y-h/p/12622730.html#_label5

1、新建管理员表

CREATE TABLE `tr_admin` (
  `loginname` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '用户名',
  `password` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '密码',
  `birth` datetime DEFAULT NULL COMMENT '生日',
  `phone` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL COMMENT '电话',
  `cardid` varchar(18) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '身份证',
  `create_time` datetime COMMENT '创建时间',
  `update_time` datetime COMMENT '修改时间',
  `delete_flag` tinyint COMMENT '逻辑删除标志,0 表示未删除, 1 表示删除',
  `version` tinyint COMMENT '版本号',
  PRIMARY KEY (`loginname`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci ROW_FORMAT=DYNAMIC;

2、新建商品种类表

CREATE TABLE `tr_category` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '商品编号',
  `name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '商品种类',
  `logo` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '商品logo',
  `remark` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '描述',
  `create_time` datetime COMMENT '创建时间',
  `update_time` datetime COMMENT '修改时间',
  `delete_flag` tinyint COMMENT '逻辑删除标志,0 表示未删除, 1 表示删除',
  `version` tinyint COMMENT '版本号',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;

3、新建商品表

CREATE TABLE `tr_goods` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '商品名',
  `pic` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '商品图',
  `price` decimal(10,2) DEFAULT NULL COMMENT '价格',
  `descri` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '描述',
  `icount` int DEFAULT NULL COMMENT '输入',
  `ocount` int DEFAULT NULL COMMENT '输出',
  `discount` decimal(10,2) DEFAULT NULL COMMENT '折扣',
  `status` int DEFAULT NULL COMMENT '状态',
  `category_id` int DEFAULT NULL COMMENT '商品种类',
  `create_time` datetime COMMENT '创建时间',
  `update_time` datetime COMMENT '修改时间',
  `delete_flag` tinyint COMMENT '逻辑删除标志,0 表示未删除, 1 表示删除',
  `version` tinyint COMMENT '版本号',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `fk_cat_id` (`category_id`) USING BTREE,
  CONSTRAINT `fk_cat_id` FOREIGN KEY (`category_id`) REFERENCES `tr_category` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;

基本目录介绍

oa_admin
|--- src
|   |--- main         保存源代码
|   |   |--- java                     代码目录
|   |   |   |--- common               保存公共操作
|   |   |   |   |--- config           保存配置类
|   |   |   |   |--- exception        保存异常处理操作
|   |   |   |   |--- utils            保存工具类
|   |   |   |   |--- validator        保存 JSR303 校验相关操作
|   |   |   |--- controller          保存控制层代码
|   |   |   |--- entity              保存实体类代码
|   |   |   |--- handler             保存数据处理相关操作
|   |   |   |--- mapper              保存 sql 相关映射操作
|   |   |   |--- service             保存业务层代码
|
|   |   |--- resources                 资源目录
|   |   |   |--- static                用于保存项目静态文件
|   |   |   |--- application.yml       用于保存项目的配置信息
|   |   |   |--- logback-spring.xml    用于保存日志的配置信息
|
|   |--- test         保存测试代码
|   |   |--- java
|
|--- pom.xml    用于保存项目依赖信息

二、基本环境搭建

新建一个springboot项目

三、集成一些常用功能

Spring整合Mybatis-Plus

(1)简介

Mybatis-plus是增强版的持久层框架,其内置了一些sql增删改查的操作,可以免去想xml文件的编写操作(当然复杂的sql逻辑还是得xml编写),还有一些其他功能如日期自动填充,逻辑删除等,总体用起来比MyBatis更加方便;

使用 MyBatisPlus,可参考:
  https://www.cnblogs.com/l-y-h/p/12859477.html

(2)springboot整合MyBatis-plus

step1:添加相关依赖

<!-- mybatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.1</version>
</dependency>
<!-- mybatis-plus-generator -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.3.1.tmp</version>
</dependency>
<!-- mybatis-plus engine -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.2</version>
</dependency>
<!-- mysql-connector -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version>
</dependency>

image-20221122200301142

Step2:
  在本地数据库新建一个 admin_template 数据库,并建立一个 back_user 表用于测试一下 MyBatisPlus 是否能使用。
back_user 建表 SQL 语句如下:

CREATE TABLE back_user (
    id bigint NOT NULL COMMENT '用户 ID',
    name varchar(50) NOT NULL COMMENT '用户名',
    mobile varchar(20) NOT NULL COMMENT '用户手机号',
    password varchar(64) NOT NULL COMMENT '用户密码',
    create_time datetime COMMENT '创建时间',
    update_time datetime COMMENT '修改时间',
    delete_flag tinyint COMMENT '逻辑删除标志,0 表示未删除, 1 表示删除',
    version tinyint COMMENT '版本号',
    PRIMARY KEY(id),
    UNIQUE INDEX(name)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COMMENT='用户表';

image-20221122224824000

step3:

在配置文件中配置 数据源信息。
  根据项目自行配置 mysql 数据源信息。

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3336/oa_admin?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=123456

image-20221122225137779

Step4:
  在项目启动类上,需要标注 @MapperScan 注解用于指明需要被扫描的 mapper 的路径。

package com.zhili.oa_admin;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.zhili.oa_admin.mapper")
public class OaAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(OaAdminApplication.class, args);
    }

}

image-20221122225643591

3、使用代码生成器

  使用 MyBatisPlus 代码生成器 AutoGenerator 根据 back_user 表逆向生成基本代码。
Step1:
  添加依赖。
  mybatis-plus-generator、velocity-engine-core 是MyBatisPlus 代码生成器所需依赖。

<!-- mybatis-plus-generator -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.3.1.tmp</version>
</dependency>
<!-- mybatis-plus engine -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.2</version>
</dependency>

Step2:
  编写一个测试类,用于测试 代码生成器 功能。
  需要修改的地方,下面注释中已标明。

package com.zhili.oa_admin;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;

/**
 * @author yuejl
 * @time 2022-11-23 14:49
 * @discription
 */

public class AutoGeneratorTest {
    @Test
    public void autoGenerator(){
        //step1:代码生成器
        AutoGenerator mpg=new AutoGenerator();

        //step2:全局配置
        GlobalConfig gc=new GlobalConfig();
        //填写代码生成时的目录
        String projectPath="F:\\codefiles\\oa_admin";
        //拼接出代码最终输出的目录
        gc.setOutputDir(projectPath+"src/main/java");
        //配置开发者信息
        gc.setAuthor("yuejl");
        //配置是否打开目录
        gc.setOpen(false);
        //配置是否开启swagger
        gc.setSwagger2(true);
        //生成文件时是否覆盖
        gc.setFileOverride(false);
        //配置主键生成策略
        gc.setIdType(IdType.ASSIGN_ID);
        //配置日期类型
        gc.setDateType(DateType.ONLY_DATE);
        gc.setServiceName("%sService");
        mpg.setGlobalConfig(gc);

        //setp3:数据源配置
        DataSourceConfig dsc=new DataSourceConfig();
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUrl("jdbc:mysql://localhost:3336/oa_admin?serverTimezone=UTC");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        //step4:包配置
        PackageConfig pc=new PackageConfig();
        //配置父包名
        pc.setParent("com.zhili");
        pc.setModuleName("oa_admin");
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        //step5:策略配置
        StrategyConfig sc=new StrategyConfig();
        //指定表名
        sc.setInclude("back_user");
        //配置数据表与实体类名之间的映射的策略
        sc.setNaming(NamingStrategy.underline_to_camel);
        //配置数据表字段与实体类属性之间映射的策略
        sc.setColumnNaming(NamingStrategy.underline_to_camel);
        //配置lombok
        sc.setEntityLombokModel(true);
        //配置驼峰转连字符
        sc.setControllerMappingHyphenStyle(true);
        //配置restful风格
        sc.setRestControllerStyle(true);
        //配置表前缀,生成表时去除前缀
        sc.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(sc);

        //step6:执行代码生成操作
        mpg.execute();

    }
}

image-20221123215721029

spring整合JSR 303

posted @   clone2653  阅读(180)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示