从0到1搭建精品电商项目(用于毕设、简历等)—— 项目介绍与初步搭建(1)

本文介绍了如何从零开始构建一个电商项目,包括创建模块、配置数据源、整合SpringBoot、使用MyBatis以及数据库逆向生成工具。项目采用HikariCP数据源,详细讲解了MyBatis的配置和Mapper的使用,以及如何使用代码生成工具自动生成Mapper和POJO。同时,文章还涉及了SpringBoot自动装配原理、Restful API设计、事务管理和Swagger2文档的集成与优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

foodie-dev-pojo

1.0-SNAPSHOT

创建foodie-dev-service模块,依赖mapper

com.wjw

foodie-dev-mapper

1.0-SNAPSHOT

创建foodie-dev-api模块(控制层),依赖service

com.wjw

foodie-dev-service

1.0-SNAPSHOT

但实际上api不应该调用mapper

所有的创建完毕之后要执行foodie-dev的Maven的安装命令。

1.5 数据库相关


在这里插入图片描述

这里没有使用外键,原因如下:

  1. 会有一定的性能影响。

  2. 如果要进行热更新(不停机维护),如果有外键可能会导致新更新的代码无法运行,因为要去匹配到现有的外键,所以可能要重启服务器。

  3. 删除物理外键可以降低耦合度。

  4. 数据库的分库分表有外键的话很难实现。

1.6 项目整合SpringBoot


在父工程foodie-dev的pom文件中修改

1. 引入依赖 parent

org.springframework.boot

spring-boot-starter-parent

2.1.5.RELEASE

之后子模块就可以不用单独制定版本号了。

2. 设置资源属性

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

3. 引入依赖 dependency

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-logging

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-configuration-processor

true

**创建foodie-dev-api的配置文件application.yml

和启动类:**

package com.wjw;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

  • 2 * @Author: 小王同学

  • 3 * @Date: 2020/12/20 15:11

  • 4

*/

@SpringBootApplication

@MapperScan(basePackages = “com.wjw.mapper”)

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

创建controller包下的类HelloController:

使用@RestController注解使得返回的对象为json格式

package com.wjw.controller;

import org.springframework.transaction.annotation.Transactional;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

import springfox.documentation.annotations.ApiIgnore;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

/**

  • 2 * @Author: 小王同学

  • 3 * @Date: 2020/12/20 16:29

  • 4

*/

@RestController

@ApiIgnore

public class HelloController {

@GetMapping(“/hello”)

@Transactional

public Object hello() {

return “Hello World”;

}

}

1.7 SpringBoot自动装配简述


为什么SpringBoot可以近乎0配置?

  • 主要就是基于其自动装配特性。

默认的设置来自于@SpringBootApplication注解,点进该注解中:在这里插入图片描述

我的启动类是在com.wjw包下,当主函数运行后,会自动扫描包下的所有类

@SpringBootConfiguration注解是一个接口被@Configuration修饰,表示它是一个容器:

在这里插入图片描述

@EnableAutoConfiguration是开启自动装配的,@Import是用于做导入的,并且导入的是一个个的Configuration(即容器)

在这里插入图片描述

AutoConfigurationImportSelector是一个选择器,类比jquery,可以选择自动装配的类

在这里插入图片描述

getAutoConfigurationEntry用于自动装配

在这里插入图片描述

configurations被存在于一个List,来自getCandidateConfigurations方法

在这里插入图片描述

spring.factories文件中存了一些自动装配的类

在这里插入图片描述

在这里插入图片描述

中可以看到内置的tomcat

在这里插入图片描述

在这里插入图片描述

中内置的是SpringMVC等等等等

1.8 HikariCP数据源与Mybatis整合


导入数据库文件…(略)

HikariCP文档

1. 父工程foodie-dev的pom中引入数据源驱动与mybatis依赖

mysql

mysql-connector-java

5.1.41

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.0

2. 在doofie-dev-api项目的yml中配置数据源和mybatis

最大连接数经验上是核数的1.5倍

############################################################

配置数据源信息

############################################################

spring:

datasource: # 数据源的相关配置

type: com.zaxxer.hikari.HikariDataSource # 数据源类型:HikariCP

driver-class-name: com.mysql.jdbc.Driver # mysql驱动

url: jdbc:mysql://localhost:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect

username: root

password: root

hikari:

connection-timeout: 30000 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQ

minimum-idle: 5 # 最小连接数

maximum-pool-size: 20 # 最大连接数

auto-commit: true # 自动提交

idle-timeout: 600000 # 连接超时的最大时长(毫秒),超时则被释放(retired),默认:10分钟

pool-name: DateSourceHikariCP # 连接池名字

max-lifetime: 1800000 # 连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟

connection-test-query: SELECT 1

############################################################

mybatis 配置

############################################################

mybatis:

type-aliases-package: com.wjw.pojo # 所有POJO类所在包路径

mapper-locations: classpath:mapper/*.xml # mapper映射文件

同时,在foodie-dev-mapper中创建com.wjw.mapper包,resources中创建mapper包

在foodie-dev-pojo中创建com.wjw.pojo包

3. 内置tomcat

############################################################

web访问端口号 约定:8088

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值