项目初始化

该板块的开发流程:

  1. 新建项目
  2. 整合mybatis-generator,自动生成数据库相关文件
  3. 打通数据库链路
  4. 配置log4j2日志
  5. 使用AOP统一处理web请求日志

(一)新建springboot项目并初始化

1.创建项目:使用IDEA开发工具在new project创建一个springboot项目在依赖上选择web项中的spring web,以及确保开发的版本是Java8




2.在preferences中搜索maven,在maven hone directory 加入自己的本地的maven仓库(设置好阿里云镜像的maven仓库),避免使用maven下载依赖的时候访问国外的maven仓库,从而导致下载时间长或者下载依赖失败的情况。

3.在pom.xml文件中,将springboot的版本改成先前选择好的2.2.1.RELEASE,修改的代码部分如下:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/> </parent>

4.在main/java/com.xxx.mall下找到MallApplication(springBoot启动文件)进行springboot的启动,运行成功后,会在控制台打印出当前的端口号

项目初始化目录如下:

(二)整合mybatis-generator,自动生成数据库文件

在pom.xml文件中加入依赖

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

在pom.xml文件中plugins加入生成数据库文件的插件

      <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><configuration><verbose>true</verbose><overwrite>true</overwrite></configuration></plugin>

在resource下添加逆向生成mapper,dao,entity的配置文件generatorConfig.xml,并在resource下添加mysql-connector-java-8.0.18.jar,修改generatorConfig.xml中配置路径。

  <classPathEntrylocation="/Users/hyb/IdeaProjects/mall/src/main/resources/mysql-connector-java-8.0.18.jar"/>

注意:有一行DTD报红,无须处理。只需要注意com.xxx.mall这样的路径是否和你自己工程的需求一样就好。

之后在自己数据库中创建数据库及导入数据表(最后给);在配置文件中修改数据库的账号和密码,数据库名,其他自动生成的路径可选择配置好的默认路径不做修改。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration><!-- 配置文件,放在resource目录下即可 --><!--数据库驱动个人配置--><classPathEntrylocation="/Users/hyb/IdeaProjects/mall/src/main/resources/mysql-connector-java-8.0.18.jar"/><context id="MysqlTables" targetRuntime="MyBatis3"><property name="autoDelimitKeywords" value="true"/><!--可以使用``包括字段名,避免字段名与sql保留字冲突报错--><property name="beginningDelimiter" value="`"/><property name="endingDelimiter" value="`"/><!-- optional,旨在创建class时,对注释进行控制 --><commentGenerator><property name="suppressDate" value="true"/><property name="suppressAllComments" value="true"/></commentGenerator><!--数据库链接地址账号密码--><jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://127.0.0.1:3306/hyb_mall?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull"userId="root"password="12345678"><property name="nullCatalogMeansCurrent" value="true"/></jdbcConnection><!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!--生成Model类存放位置--><javaModelGenerator targetPackage="com.hyb.mall.model.pojo"targetProject="src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="true"/><!-- 是否对类CHAR类型的列的数据进行trim操作 --><property name="trimStrings" value="true"/><!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 --><property name="immutable" value="false"/></javaModelGenerator><!--生成mapper映射文件存放位置--><sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!--生成Dao类存放位置--><javaClientGenerator type="XMLMAPPER" targetPackage="com.hyb.mall.model.dao"targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!--生成对应表及类名--><table schema="root" tableName="imooc_mall_cart" domainObjectName="Cart"enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table><table tableName="imooc_mall_category" domainObjectName="Category" enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table><table tableName="imooc_mall_order" domainObjectName="Order" enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table><table tableName="imooc_mall_order_item" domainObjectName="OrderItem"enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table><table tableName="imooc_mall_product" domainObjectName="Product" enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table><table tableName="imooc_mall_user" domainObjectName="User" enableCountByExample="false"enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"selectByExampleQueryId="false"></table></context>
</generatorConfiguration>

数据库表


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
SET NAMES utf8mb4;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;# Dump of table imooc_mall_cart
# ------------------------------------------------------------DROP TABLE IF EXISTS `imooc_mall_cart`;CREATE TABLE `imooc_mall_cart` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '购物车id',`product_id` int(11) NOT NULL COMMENT '商品id',`user_id` int(11) NOT NULL COMMENT '用户id',`quantity` int(11) NOT NULL DEFAULT '1' COMMENT '商品数量',`selected` int(11) NOT NULL DEFAULT '1' COMMENT '是否已勾选:0代表未勾选,1代表已勾选',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='购物车';# Dump of table imooc_mall_category
# ------------------------------------------------------------DROP TABLE IF EXISTS `imooc_mall_category`;CREATE TABLE `imooc_mall_category` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(32) NOT NULL DEFAULT '' COMMENT '分类目录名称',`type` int(11) NOT NULL COMMENT '分类目录级别,例如1代表一级,2代表二级,3代表三级',`parent_id` int(11) NOT NULL COMMENT '父id,也就是上一级目录的id,如果是一级目录,那么父id为0',`order_num` int(11) NOT NULL COMMENT '目录展示时的排序',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='商品分类 ';LOCK TABLES `imooc_mall_category` WRITE;
/*!40000 ALTER TABLE `imooc_mall_category` DISABLE KEYS */;INSERT INTO `imooc_mall_category` (`id`, `name`, `type`, `parent_id`, `order_num`, `create_time`, `update_time`)
VALUES(3,'新鲜水果',1,0,1,'2019-12-18 01:17:00','2019-12-28 17:11:26'),(4,'橘子橙子',2,3,1,'2019-12-18 01:17:00','2019-12-28 16:25:10'),(5,'海鲜水产',1,0,2,'2019-12-18 01:17:00','2019-12-28 16:25:20'),(6,'精选肉类',1,0,3,'2019-12-18 01:17:00','2019-12-28 16:25:21'),(7,'螃蟹',2,5,1,'2019-12-18 01:17:00','2019-12-28 16:25:15'),(8,'鱼类',2,5,2,'2019-12-18 01:17:00','2019-12-28 16:25:16'),(9,'冷饮冻食',1,0,4,'2019-12-20 13:45:28','2019-12-28 16:25:22'),(10,'蔬菜蛋品',1,0,5,'2019-12-20 13:45:28','2019-12-28 16:25:23'),(11,'草莓',2,3,2,'2019-12-18 01:17:00','2019-12-28 15:44:42'),(12,'奇异果',2,3,3,'2019-12-18 01:17:00','2019-12-28 16:25:12'),(13,'海参',2,5,3,'2019-12-18 01:17:00','2019-12-28 16:25:17'),(14,'车厘子',2,3,4,'2019-12-18 01:17:00','2019-12-28 16:25:12'),(15,'火锅食材',2,27,5,'2019-12-18 01:17:00','2020-02-11 00:42:33'),(16,'牛羊肉',2,6,1,'2019-12-18 01:17:00','2019-12-28 16:25:18'),(17,'冰淇淋',2,9,1,'2019-12-18 01:17:00','2019-12-28 16:25:18'),(18,'蔬菜综合',2,10,1,'2019-12-18 01:17:00','2020-02-11 00:48:27'),(19,'果冻橙',3,4,1,'2019-12-18 01:17:00','2020-02-11 00:37:02'),(27,'美味菌菇',1,0,7,'2019-12-20 13:45:28','2020-02-10 23:20:36'),(28,'其他水果',2,3,4,'2019-12-18 01:17:00','2019-12-28 16:25:12');/*!40000 ALTER TABLE `imooc_mall_category` ENABLE KEYS */;
UNLOCK TABLES;# Dump of table imooc_mall_order
# ------------------------------------------------------------DROP TABLE IF EXISTS `imooc_mall_order`;CREATE TABLE `imooc_mall_order` (`id` int(64) NOT NULL AUTO_INCREMENT COMMENT '主键id',`order_no` varchar(128) NOT NULL DEFAULT '' COMMENT '订单号(非主键id)',`user_id` int(64) NOT NULL COMMENT '用户id',`total_price` int(64) NOT NULL COMMENT '订单总价格',`receiver_name` varchar(32) NOT NULL COMMENT '收货人姓名快照',`receiver_mobile` varchar(32) NOT NULL COMMENT '收货人手机号快照',`receiver_address` varchar(128) NOT NULL DEFAULT '' COMMENT '收货地址快照',`order_status` int(10) NOT NULL DEFAULT '10' COMMENT '订单状态: 0用户已取消,10未付款(初始状态),20已付款,30已发货,40交易完成',`postage` int(10) DEFAULT '0' COMMENT '运费,默认为0',`payment_type` int(4) NOT NULL DEFAULT '1' COMMENT '支付类型,1-在线支付',`delivery_time` timestamp NULL DEFAULT NULL COMMENT '发货时间',`pay_time` timestamp NULL DEFAULT NULL COMMENT '支付时间',`end_time` timestamp NULL DEFAULT NULL COMMENT '交易完成时间',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='订单表;';# Dump of table imooc_mall_order_item
# ------------------------------------------------------------DROP TABLE IF EXISTS `imooc_mall_order_item`;CREATE TABLE `imooc_mall_order_item` (`id` int(64) NOT NULL AUTO_INCREMENT COMMENT '主键id',`order_no` varchar(128) NOT NULL DEFAULT '' COMMENT '归属订单id',`product_id` int(11) NOT NULL COMMENT '商品id',`product_name` varchar(100) NOT NULL DEFAULT '' COMMENT '商品名称',`product_img` varchar(128) NOT NULL DEFAULT '' COMMENT '商品图片',`unit_price` int(11) NOT NULL COMMENT '单价(下单时的快照)',`quantity` int(10) NOT NULL DEFAULT '1' COMMENT '商品数量',`total_price` int(11) NOT NULL DEFAULT '0' COMMENT '商品总价',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='订单的商品表 ';# Dump of table imooc_mall_product
# ------------------------------------------------------------DROP TABLE IF EXISTS `imooc_mall_product`;CREATE TABLE `imooc_mall_product` (`id` int(64) NOT NULL AUTO_INCREMENT COMMENT '商品主键id',`name` varchar(100) NOT NULL COMMENT '商品名称',`image` varchar(500) NOT NULL DEFAULT '' COMMENT '产品图片,相对路径地址',`detail` varchar(500) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '商品详情',`category_id` int(11) NOT NULL COMMENT '分类id',`price` int(11) NOT NULL COMMENT '价格,单位-分',`stock` int(11) NOT NULL COMMENT '库存数量',`status` int(6) NOT NULL DEFAULT '1' COMMENT '商品上架状态:0-下架,1-上架',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='商品表';LOCK TABLES `imooc_mall_product` WRITE;
/*!40000 ALTER TABLE `imooc_mall_product` DISABLE KEYS */;INSERT INTO `imooc_mall_product` (`id`, `name`, `image`, `detail`, `category_id`, `price`, `stock`, `status`, `create_time`, `update_time`)
VALUES(2,'澳洲进口大黑车厘子大樱桃包甜黑樱桃大果多汁 500g 特大果','http://111.231.103.117:8081/images/chelizi2.jpg','商品毛重:1.0kg货号:608323093445原产地:智利类别:美早热卖时间:1月,11月,12月国产/进口:进口售卖方式:单品',14,50,100,1,'2019-12-18 16:08:15','2020-02-11 00:08:25'),(3,'茶树菇 美味菌菇 东北山珍 500g','http://111.231.103.117:8081/images/chashugu.jpg','商品名:茶树菇 商品特点:美味菌菇 东北山珍 500g',15,1000,6,1,'2019-12-18 16:10:50','2020-02-11 00:42:42'),(14,'Zespri佳沛 新西兰阳光金奇异果 6个装','http://111.231.103.117:8081/images/mihoutao2.jpg','商品编号:4635056商品毛重:0.71kg商品产地:新西兰类别:金果包装:简装国产/进口:进口原产地:新西兰',12,39,77,1,'2019-12-18 16:11:13','2020-02-10 23:36:48'),(17,'红颜奶油草莓 约重500g/20-24颗 新鲜水果','http://111.231.103.117:8081/images/caomei2.jpg','商品毛重:0.58kg商品产地:丹东/南通/武汉类别:红颜草莓包装:简装国产/进口:国产',11,99,84,1,'2019-12-18 16:11:13','2020-02-10 23:37:48'),(21,'智利原味三文鱼排(大西洋鲑)240g/袋 4片装','http://111.231.103.117:8081/images/sanwenyu2.jpg','商品毛重:260.00g商品产地:中国大陆保存状态:冷冻国产/进口:进口包装:简装类别:三文鱼海水/淡水:海水烹饪建议:煎炸,蒸菜,烧烤原产地:智利',8,499,1,1,'2019-12-28 15:13:07','2020-02-10 23:38:46'),(22,'即食海参大连野生辽刺参 新鲜速食 特级生鲜海产 60~80G','http://111.231.103.117:8081/images/haishen.jpg','商品毛重:1.5kg商品产地:中国大陆贮存条件:冷冻重量:50-99g国产/进口:国产适用场景:养生滋补包装:袋装原产地:辽宁年限:9年以上等级:特级食品工艺:冷冻水产热卖时间:9月类别:即食海参固形物含量:70%-90%特产品类:大连海参售卖方式:单品',13,699,3,1,'2019-12-28 15:16:29','2020-02-11 00:04:29'),(23,'澳大利亚直采鲜橙 精品澳橙12粒 单果130-180g','http://111.231.103.117:8081/images/chengzi.jpg','商品毛重:2.27kg商品产地:澳大利亚类别:脐橙包装:简装国产/进口:进口原产地:澳大利亚',4,12,12,1,'2019-12-28 16:02:13','2020-02-11 00:40:15'),(24,'智利帝王蟹礼盒装4.4-4.0斤/只 生鲜活鲜熟冻大螃蟹','http://111.231.103.117:8081/images/diwangxie.jpg','商品毛重:3.0kg商品产地:智利大闸蟹售卖方式:公蟹重量:2000-4999g套餐份量:5人份以上国产/进口:进口海水/淡水:海水烹饪建议:火锅,炒菜,烧烤,刺身,加热即食包装:简装原产地:智利保存状态:冷冻公单蟹重:5.5两及以上分类:帝王蟹特产品类:其它售卖方式:单品',7,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:05:05'),(25,'新疆库尔勒克伦生无籽红提 国产新鲜红提葡萄 提子 5斤装','http://111.231.103.117:8081/images/hongti.jpg','商品毛重:2.5kg商品产地:中国大陆货号:XZL201909002重量:2000-3999g套餐份量:2人份国产/进口:国产是否有机:非有机单箱规格:3个装,4个装,5个装类别:红提包装:简装原产地:中国大陆售卖方式:单品',28,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:44:05'),(26,'越南进口红心火龙果 4个装 红肉中果 单果约330-420g','http://111.231.103.117:8081/images/hongxinhuolongguo.jpg','商品毛重:1.79kg商品产地:越南重量:1000-1999g类别:红心火龙果包装:简装国产/进口:进口',28,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:44:11'),(27,'内蒙古羔羊肉串 500g/袋(约20串)鲜冻羊肉串 BBQ烧烤食材','http://111.231.103.117:8081/images/yangrouchuan.jpg','商品毛重:0.585kg商品产地:内蒙古巴彦淖尔市保存状态:冷冻重量:500-999g套餐份量:3人份国产/进口:国产烹饪建议:烧烤原产地:内蒙古品种:其它热卖时间:4月,5月,6月,7月,8月,9月,10月,11月,12月饲养方式:圈养类别:羊肉串包装:简装套餐周期:12个月',16,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:11:30'),(28,'玛琪摩尔新西兰进口冰淇淋大桶装','http://111.231.103.117:8081/images/bingqilin.jpg','商品毛重:1.04kg商品产地:新西兰国产/进口:进口包装:量贩装',17,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:10:40'),(29,'西兰花沙拉菜 350g 甜玉米粒 青豆豌豆 胡萝卜冷冻方便蔬菜','http://111.231.103.117:8081/images/shalacai.jpg','商品毛重:370.00g商品产地:浙江宁波重量:500g以下套餐份量:家庭装类别:速冻玉米/豌豆包装:简装烹饪建议:炒菜,炖菜,煎炸,蒸菜售卖方式:单品',18,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:34:01'),(36,'四川果冻橙 吹弹可破','http://111.231.103.117:8081/images/guodongcheng.jpg','商品毛重:370.00g商品产地:四川 重量:1000g',19,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:38:14'),(37,'进口牛油果 中果6粒装 单果约130-160g ','http://111.231.103.117:8081/images/niuyouguo.jpg','商品名称:京觅进口牛油果 6个装商品编号:3628240商品毛重:1.2kg商品产地:秘鲁、智利、墨西哥重量:1000g以下国产/进口:进口',28,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:47:42'),(38,'中街1946网红雪糕冰淇淋','http://111.231.103.117:8081/images/bingqilin2.jpg','商品名称:中街1946网红雪糕冰淇淋乐享系列半巧*5牛乳*5阿棕*2冰激凌冷饮冰棍冰棒商品编号:52603405444店铺: 中街1946官方旗舰店商品毛重:1.3kg商品产地:中国大陆国产/进口:国产包装:量贩装售卖方式:组合',17,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:50:54'),(39,'福建六鳌红薯5斤','http://111.231.103.117:8081/images/hongshu.jpg','商品名称:京觅福建六鳌红薯5斤商品编号:4087121商品毛重:2.8kg商品产地:福建省漳浦县六鳌镇重量:2500g及以上烹饪建议:煎炸,蒸菜,烧烤包装:简装分类:地瓜/红薯售卖方式:单品',18,40,222,1,'2019-12-28 16:06:34','2020-02-11 00:51:59'),(40,'胡萝卜','http://111.231.103.117:8081/images/huluobo.jpg','商品名称:绿鲜知胡萝卜商品编号:4116192商品毛重:1.07kg商品产地:北京包装:简装分类:萝卜烹饪建议:火锅,炒菜,炖菜',18,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:53:25'),(41,'羊肉卷 内蒙羔羊肉 鲜嫩 500g/袋 首农出品 羊排肉卷 火锅食材','http://111.231.103.117:8081/images/yangroujuan.jpg','商品名称:首食惠羊排片商品编号:4836347商品毛重:0.51kg商品产地:辽宁省大连市保存状态:冷冻品种:其它国产/进口:进口饲养方式:散养类别:羊肉片/卷包装:简装烹饪建议:火锅,炒菜,炖菜原产地:新西兰',16,222,222,1,'2019-12-28 16:06:34','2020-02-11 00:48:03'),(42,'甜玉米 切好 香甜','http://111.231.103.117:8081/images/tianyumi.jpg','品牌: 绿鲜知(greenseer)\n商品名称:绿鲜知甜玉米商品编号:4983604商品毛重:1.1kg商品产地:云南玉溪类别:玉米',18,240,222,1,'2019-12-28 16:06:34','2020-02-11 00:52:19');/*!40000 ALTER TABLE `imooc_mall_product` ENABLE KEYS */;
UNLOCK TABLES;# Dump of table imooc_mall_user
# ------------------------------------------------------------DROP TABLE IF EXISTS `imooc_mall_user`;CREATE TABLE `imooc_mall_user` (`id` int(64) NOT NULL AUTO_INCREMENT COMMENT '用户id',`username` varchar(32) NOT NULL DEFAULT '' COMMENT '用户名',`password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密',`personalized_signature` varchar(50) NOT NULL DEFAULT '' COMMENT '个性签名',`role` int(4) NOT NULL DEFAULT '1' COMMENT '角色,1-普通用户,2-管理员',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  COMMENT='用户表 ';LOCK TABLES `imooc_mall_user` WRITE;
/*!40000 ALTER TABLE `imooc_mall_user` DISABLE KEYS */;INSERT INTO `imooc_mall_user` (`id`, `username`, `password`, `personalized_signature`, `role`, `create_time`, `update_time`)
VALUES(1,'1','1','3',1,'2019-12-16 02:37:33','2020-02-09 18:41:12'),(2,'xiaomu','AWRuqaxc6iryhHuA4OnFag==','更新了我的签名',2,'2019-12-17 15:11:32','2020-02-10 09:52:12'),(3,'你好','AWRuqaxc6iryhHuA4OnFag==','',1,'2019-12-20 13:41:03','2020-02-10 09:52:15'),(4,'111','G72IZGCCcBXl1gXtRCUiUQ==','',1,'2019-12-27 19:34:56','2019-12-27 19:34:56'),(5,'444','uFfu1clAXB8rmASKrlBnkg==','cecc',1,'2019-12-27 19:38:03','2019-12-28 01:04:06'),(6,'你好2','JdVa0oOqQAr0ZMdtcTwHrQ==','',1,'2020-02-08 17:47:06','2020-02-08 17:47:06'),(7,'你好3','JdVa0oOqQAr0ZMdtcTwHrQ==','',1,'2020-02-08 17:49:15','2020-02-08 17:49:15'),(8,'你好4','12345678','',1,'2020-02-09 19:49:54','2020-02-09 19:49:54'),(9,'xiaomu2','AWRuqaxc6iryhHuA4OnFag==','祝你今天好心情',2,'2020-02-09 20:39:47','2020-02-11 00:56:02');/*!40000 ALTER TABLE `imooc_mall_user` ENABLE KEYS */;
UNLOCK TABLES;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

开始进行逆向生成实体类和mapper

在右边有个maven,点击打开,找到Plugins下的mybatis-generator下mybatis-generator:generate双击开始生成文件。

生成好后的控制台会显示BUILD SUCCESS和目录会生成model/dao,model/pojo,resources/mapper如下图,如果失败则重新检查前几步:


(三)打通数据库链路

因为生成了相关的数据库文件,再次启动MallApplication会报错,原因是因为没有在application.properties写连接数据库的相关信息,下面代码写入后,再次启动则springboot启动成功。

#数据库连接
spring.datasource.name=hyb_mall
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/hyb_mall?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=12345678

创建Service/impl和Controller层,并在两个层中分别创建UserController,UserSvice接口和UserSviceImpl实现类。从而进行测试。

/*** 描述:用户控制器*/
@Controller
public class UserController {@AutowiredUserService userService;@GetMapping("/test")@ResponseBodypublic User personalPage(){return userService.getUser();}
}
/*** 描述:UserService*/
public interface UserService {User getUser();
}

之后还必须在MallApplication 方法上添加mapperScan,找到指定dao所在的路径

@MapperScan(basePackages = "com.hyb.mall.model.dao")

这里userMapper 可能会出现红色的波浪报错信息,是因为这里的mapper是配置在MallApplication方法的MapperScan,给MyBatis识别用的,却没有告诉我们的IDE。解决这个问题方法是在dao层的每个接口上添加@Repository注解,这样我们的IED就会认为这是个资源,就不会报错了。

/*** 描述:UserService实现类*/
@Service
public class UserServiceImpl implements UserService {@AutowiredUserMapper userMapper;@Overridepublic User getUser() {return userMapper.selectByPrimaryKey(1);}
}

创建完成后,如果运行程序会失败,需要在application.properties中配置mapper的路径,不然会出找不到mapper的错误。

mybatis.mapper-locations=classpath:mappers/*.xml

结束完成以上配置和代码的书写后,启动Springboot在网页中输入http://localhost:8080/test就能显示数据库的json字符串信息。

(四)配置log4j2日志

日志级别:error,warn,info,debug,trace

先在pom.xml中加入依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>

并在原有pom.xml中的spring-boot-starter-web添加exclusions内的代码,主要是排除logback日志信息,避免日志主键冲突。

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency>

在resources下创建log4j2.xml,配置日志信息(我是Mac,win系统用户可能需要改下日志保存路径)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="fatal"><Properties><!--mac的路径不用改,会自动将日志放在设定好目录下,win开发者需要将路径改成自己的日志放置路径--><Property name="baseDir" value="${sys:user.home}/logs"/></Properties><Appenders><Console name="Console" target="SYSTEM_OUT"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT"onMismatch="DENY"/><PatternLayoutpattern="[%d{MM:dd HH:mm:ss.SSS}] [%level] [%logger{36}] - %msg%n"/></Console><!--debug级别日志文件输出--><RollingFile name="debug_appender" fileName="${baseDir}/debug.log"filePattern="${baseDir}/debug_%i.log.%d{yyyy-MM-dd}"><!-- 过滤器 --><Filters><!-- 限制日志级别在debug及以上在info以下 --><ThresholdFilter level="debug"/><ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><!-- 日志格式 --><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><!-- 策略 --><Policies><!-- 每隔一天转存 --><TimeBasedTriggeringPolicy interval="1" modulate="true"/><!-- 文件大小 --><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile><!-- info级别日志文件输出 --><RollingFile name="info_appender" fileName="${baseDir}/info.log"filePattern="${baseDir}/info_%i.log.%d{yyyy-MM-dd}"><!-- 过滤器 --><Filters><!-- 限制日志级别在info及以上在error以下 --><ThresholdFilter level="info"/><ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/></Filters><!-- 日志格式 --><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><!-- 策略 --><Policies><!-- 每隔一天转存 --><TimeBasedTriggeringPolicy interval="1" modulate="true"/><!-- 文件大小 --><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile><!-- error级别日志文件输出 --><RollingFile name="error_appender" fileName="${baseDir}/error.log"filePattern="${baseDir}/error_%i.log.%d{yyyy-MM-dd}"><!-- 过滤器 --><Filters><!-- 限制日志级别在error及以上 --><ThresholdFilter level="error"/></Filters><!-- 日志格式 --><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><Policies><!-- 每隔一天转存 --><TimeBasedTriggeringPolicy interval="1" modulate="true"/><!-- 文件大小 --><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile></Appenders><Loggers><Root level="debug"><AppenderRef ref="Console"/><AppenderRef ref="debug_appender"/><AppenderRef ref="info_appender"/><AppenderRef ref="error_appender"/></Root></Loggers>
</Configuration>

使用AOP统一处理web请求日志-保证系统健壮性

在pom.xml导入AOP的依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

创建filter/WebLogAspect类来控制日志

/*** 描述:打印请求和响应信息*/
@Aspect
@Component
public class WebLogAspect {private final Logger log = LoggerFactory.getLogger(WebLogAspect.class);@Pointcut("execution(public * com.hyb.mall.controller.*.*(..))")public void webLog(){}public void daBefore(JoinPoint joinPoint){//收到请求,记录请求内容ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();//真正记录内容log.info("URL : "+request.getRequestURI().toString());log.info("HTTP_METHOD : " +request.getMethod());log.info("IP : " + request.getRemoteAddr());log.info("CLASS_METHOD : "+joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());log.info("ARGS : "+ Arrays.toString(joinPoint.getArgs()));}@AfterReturning(returning = "res",pointcut = "webLog()")public void doAfterReturning(Object res) throws JsonProcessingException {//处理完请求,返回内容log.info("RESPONSE :"+new ObjectMapper().writeValueAsString(res));}
}

再次启动springboot后,在网页打开http://localhost:8080/test在控制台不报错并且显示数据库json的日志信息。

Java-springboot生鲜电商项目(一)数据设计与项目初始化相关推荐

  1. Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载)

    Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载) 说明:主要是针对一些中大型的项目需要进行分布式以及负载均衡的架构提一些思路与建议. 面对大量用户访问.高并发请求,海量 ...

  2. Java开源生鲜电商平台-深刻理解电商的库存架构与解决方案(源码可下载)

    https://www.cnblogs.com/jurendage/p/9227283.html 说明:一般电商的库存都是跟SKU相关联的,那么怎么样才能进行SKU的库存管理呢?有以下几种方式与方法: ...

  3. Java实现对货物抽检_Java开源生鲜电商平台-库存管理设计与架构(源码可下载)...

    Java开源生鲜电商平台-库存管理设计与架构(源码可下载) 说明:Java开源生鲜电商平台-库存管理设计与架构有以下几个功能 WMS的功能: 1.业务批次管理 该功能提供完善的物料批次信息.批次管理设 ...

  4. Java生鲜电商平台-监控模块的设计与架构

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! ‍ 来源:https://www.cnblogs.com/ ...

  5. java大型wms架构设计_Java生鲜电商平台-库存管理设计与架构

    Java生鲜电商平台-库存管理设计与架构 WMS的功能: 1.业务批次管理 该功能提供完善的物料批次信息.批次管理设置.批号编码规则设置.日常业务处理.报表查询,以及库存管理等综合批次管理功能,使企业 ...

  6. [附源码]计算机毕业设计JAVA社区生鲜电商平台

    [附源码]计算机毕业设计JAVA社区生鲜电商平台 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Inte ...

  7. Java开源生鲜电商平台-订单抽成模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-订单抽成模块的设计与架构(源码可下载) 说明:订单抽成指的是向卖家收取相应的信息服务费.(目前市场上有两种抽成方式,一种是按照总额的抽成比率,另外一种是按照订单明细的抽成比率 ...

  8. Java开源生鲜电商平台-支付模块的设计与架构(源码可下载

    Java开源生鲜电商平台-支付模块的设计与架构(源码可下载) Java开源生鲜电商平台-支付模块的设计与架构(源码可下载) 开源生鲜电商平台支付目前支持支付宝与微信.针对的是APP端(android ...

  9. 某生鲜电商平台的监控模块设计

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 巨人大哥 来源 | https://www.c ...

  10. 基于JAVA springboot+mybatis 电商书城平台系统设计和实现

     本项目演示地址链接  > 主要实现了书城网站的浏览.加入购物车操作.订单操作.支付操作.分类查看.搜索.以及后台上传图书信息以及订单管理和一些基本操作功能 摘要信息: 随着市场经济的逐渐形成, ...

最新文章

  1. Nuget很慢,我们该怎么办
  2. 如何嗅闻交换网络和ARP骗子-ARP解释的原则
  3. 深入理解Java泛型
  4. java在线支付---02_分析易宝支付的工作流程
  5. 7. COM编程——初始化并创建COM对象
  6. FileUpload1 在部分浏览器中实现多选
  7. 扩增子分析流程 —— 数据处理(vsearch)
  8. ac68无线网卡 linux驱动下载,华硕ac68驱动|华硕USB-AC68无线网卡驱动下载 V2.1.2.1 官方版 - 比克尔下载...
  9. OpenWrt——进行PPPoE拨号时透过路由器访问光猫的方法
  10. HTML5 概述及基本语法
  11. 3_01_GLib库入门与实践_测试框架
  12. 监控prometheus-2
  13. ABP学习笔记:关于生成Proxy前端代理的一些注意事项
  14. Unity Application Block 1.2 学习笔记 [转]
  15. 逻辑回归三部曲——逻辑回归项目实战(信贷数据+Python代码实现)
  16. arduino nano电路图
  17. IntelliJ IDEA查看一个类的类图结构 show diagrams,用图表的方式查看类的关系层次
  18. 深度学习论文阅读图像分类篇(五):ResNet《Deep Residual Learning for Image Recognition》
  19. 筑本T8神奇魔轮 专卖网站(全国货到付款,7天无条件退货)
  20. 准备选型直播SDK产品,ChatGPT竟然这么说...

热门文章

  1. NodeBB论坛搭建
  2. 怎么屏蔽还有照片_【文末福利】在朋友圈发男神照片忘了屏蔽父母,麻麻的回应亮了…...
  3. 如何解决读写txt文件中文乱码问题
  4. Sklearn实现普通最小二乘法
  5. JAVA数独解题(四):数对法
  6. np.meshgrid函数中的indexing参数问题
  7. 阿里高维向量检索方法NSG介绍
  8. 手机做web服务器 无限流量,想要无限流量套餐?别做梦了!
  9. 关于某某大学校园网认证系统的一些工作
  10. Effective C++记录(6):Explicitly disallow the use of compiler-generated functions you do not want