基于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>
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='用户表';
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
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);
}
}
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();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!