商城项目--5.五个模块初步成型

开头老规矩,手动推荐一波了,欢迎大家关注我的公众号“风云编程录”,感谢大家🙏。

0. 前序--侧边栏自定义模块的添加

今天,我看到其他博客侧边栏是可以添加自己的微信公众号。我其实也有自己的微信公众号“风云编程录”,当然希望在自己的博客上可以推广一下。但是大家都理解,毕竟属于不同的流量入口,CSDN肯定是不会那么容易让你通过它将流量引向其他平台的。所以我研究了一下,具体怎样才能在自己的博客侧栏添加这些自定义内容(懂得都懂,如果不按照CSDN要求的路子走,你擅自添加这些内容,它就会在你提交文章的时候审核不通过)。

研究了一半天,发现早期是比较容易添加的,但是对于我们这种已经走入到21世纪2022年的新青年来说,就没有那么多的便利了。只有三种方式才能做到达成这种效果。具体如下:

(1)“钞能力” ,充值CSDN的VIP会员

(2)“专家头衔”,达到CSDN制定的一系列标准,成为CSDN认证的专家团队的一员

(3)“企业户口”,对于在CSDN注册的企业账户,上传自己的企业证明,也可以达成该成就。

分析了上面的三种方式,对于我这个“白嫖屌丝”来说,还是放弃不合理的幻想,写在正文之前,让大家一乐。

好了,书归正文。有一段时间没有更新我们的商城项目了。主要是上个周是由我负责项目上线,需要准备的东西特别多。而且每次上线我都惴惴不安,心思都在这上面了。万幸上线没有问题,这个周我们继续更新我们的商城项目的后续步骤。

1. 整合mybatisplus

1.1 在gulimall-common模块中,导入如下依赖

<dependency>

    <groupId>com.baomidou</groupId>

    <artifactId>mybatis-plus-boot-starter</artifactId>

    <version>3.2.0</version>

</dependency>

1.2 配置

1.2.1 配置数据源

1.2.1.1 导入mysql驱动 

<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>8.0.17</version>

</dependency>

1.2.1.2 解决gulimall-common模块中的错误依赖

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>servlet-api</artifactId>

    <version>2.5</version>

    <scope>provided</scope> //目标环境已经存在,不需要打到包里面

</dependency>

其中,pom文件依赖中有一个小知识点,对于scope属性配置为provided的类型,代表该jar包不需要打包到部署包中,该jar包由具体的运行环境提供。

1.2.1.3 application.yml中配置数据源相关信息

在gulimall-product模块中添加配置文件application.yml,配置内容如下:

spring:

  datasource:

    username: root

    password: root

    url: jdbc:mysql://192.168.56.100:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai

    driver-class-name: com.mysql.jdbc.Driver

1.2.2 配置mybatis-plus

1.2.2.1 在启动类上使用@MapperScan注解标记我们生成的dao类的位置

@SpringBootApplication
@MapperScan("com.whq.gulimall.product.dao")
public class GulimallProductApplication {

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

}

1.2.2.2 配置Mybatis-plus的sql映射文件位置,配置位置为application.yml

mybatis-plus:

  mapper-locations: classpath:/mapper/**/*.xml

1.2.2.3 配置主键自增,配置位置为application.yml(已携带上一步的配置)

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto

1.3 测试

配置完成后,我们使用测试类测试一下。这里发现renren-generator生成的代码中有一处错误。运行项目的时候实体类中报错。

 原因是数据库中采用的是Longblob 类型, java中应该使用byte[] 去定义变量。

修改如下:

1.3.1 测试数据保存以及主键自增

@SpringBootTest
class GulimallProductApplicationTests {

	@Autowired
	BrandService brandService;
	@Test
	void contextLoads() {
		BrandEntity brandEntity = new BrandEntity();
		brandEntity.setName("华为");
		brandService.save(brandEntity);
		System.out.println("保存成功。。。。。");
	}

}

测试结果如下:

1.3.2 测试更新

依托上一个用例中添加的huawei记录,我们进行更新,测试用例如下:

@SpringBootTest
class GulimallProductApplicationTests {

	@Autowired
	BrandService brandService;
	@Test
	void contextLoads() {
		BrandEntity brandEntity = new BrandEntity();
//		brandEntity.setName("华为");
//		brandService.save(brandEntity);
//		System.out.println("保存成功。。。。。");

		brandEntity.setBrandId(31L);
		brandEntity.setDescript("华为品牌");
		brandService.updateById(brandEntity);
		System.out.println("更新成功。。。。");

	}

}

1.3.3 查询用例

@SpringBootTest
class GulimallProductApplicationTests {

	@Autowired
	BrandService brandService;
	@Test
	void contextLoads() {
		BrandEntity brandEntity = new BrandEntity();
//		brandEntity.setName("华为");
//		brandService.save(brandEntity);
//		System.out.println("保存成功。。。。。");

//		brandEntity.setBrandId(31L);
//		brandEntity.setDescript("华为品牌");
//		brandService.updateById(brandEntity);
//		System.out.println("更新成功。。。。");

		List<BrandEntity> list = brandService.list(new QueryWrapper<BrandEntity>().isNotNull("logo"));
		list.forEach((item)->{
			System.out.println(item);
		});
	}

}

2.  其他四个模块的初步成型

通过代码生成工具,我们生成一下其他模块的代码,具体过程如下:

(1) 将代码生成器renren-generator的 application.yml的配置修改修改为对应模块的数据库(此处都以member模块为例):

spring:

  datasource:

    type: com.alibaba.druid.pool.DruidDataSource

    #MySQL配置

    driverClassName: com.mysql.cj.jdbc.Driver

    url: jdbc:mysql://192.168.56.100:3306/gulimall_ums?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai

    username: root

    password: root

(2)将代码生成器renren-generator的generator.properties修改如下:

mainPath=com.whq

package=com.whq.gulimall

moduleName=member

author=cloudwindback

email=giteeforwhq@163.com

tablePrefix=ums_

(3) 修改完成后,重启一下renren-generator模块

(4) 将生成的代码替换掉member模块中main目录中的代码

(5) member模块中添加gulimall-common的组建依赖

		<dependency>
			<groupId>com.whq.gulimall</groupId>
			<artifactId>gulimall-common</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

(6) member模块添加application.yml 文件,增加配置数据源、mapper文件所在位置以及d自增

spring:

  datasource:

    username: root

    password: root

    url: jdbc:mysql://192.168.56.100:3306/gulimall_ums?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai

    driver-class-name: com.mysql.jdbc.Driver



mybatis-plus:

  mapper-locations: classpath:/mapper/**/*.xml

  global-config:

    db-config:

      id-type: auto

(7) 将entity中 UndoLogEntity 的Longblob属性修改为byte[]属性

(8) 启动后验证

随便找一个controller中的实现进行验证

 3. 高可用配置(端口区域预分配)

由于我们多个模块没有区分端口号,默认启动都会以8080端口进行启动,这样同时启动会因为端口冲突导致启动失败,我们约定如下分配:

模块端口范围
coupon7000~7999
member8000~8999
order9000~9999
product1000~10999
ware11000~11999

这样,每一个模块分配一个端口号段,避免后期保证高可用每个模块都需要启用多个微服务实例的情况。

至此,我们的项目已经有了五个比较完整的模块了,我们已经走出了一段不短的距离了。

最后还是老规矩,推荐一波:欢迎大家关注我的公众号“风云编程录”,感谢大家🙏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值