云商城P1&项目搭建

一.项目搭建

可以使用xshell连接虚拟机,只要保证虚拟机开机即可。
xshell中复制粘贴,选中复制(复制到外边),ctrl+inset复制(复制到里边),shift+insert粘贴。

1.工程搭建

1.创建一个普通的java项目用于包含这些内容cloudmaket。

2.创建顶级父工程cloud-market-parent(使用spring初始化创建),里边只保留配置一些公共的依赖比如lombok,test;打包方式设置为pom,主要负责共有依赖的版本控制;将src目录删除(因为不需要写代码只负责版本控制)。

3.在顶级父工程cloud-market-parent中创建各个微服务父工程包括:

  • cloud-market-api
  • cloud-market-gateway
  • cloud-market-service
  • cloud-market-util
  • cloud-market-web

以上均为微服务的父工程,负责各个微服务的依赖版本控制,打包方式同样为pom;同样删除src目录。

最终形成的项目结构:

4.在cloud-market-util下搭建公共工程,公共工程market-service-dependency包含了所有微服务工程公共依赖包,所有微服务工程公共配置类(同时还继承了顶级父工程中配置的2个依赖),以后其他微服务工程需要使用的常用依赖都可以直接从该公共工程中取得。包括web包,mybatis-plus包,mysql包,redis包,nacos包。其中nacos包需要顶级父工程中引入spring-cloud-alibaba-dependencies依赖:

	<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.6.RELEASE</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

否则market-service-dependency中的nacos相关依赖会爆红(因为nacos相关依赖是属于alibaba的)

 		<!--nacos包-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

5.采用Restful风格进行编码,因此对于code,msg,data需要封装统一返回结果类。这部分也属于共有的工具类部分,同样放到cloud-market-util模块下。新建market-common模块。在src/main/java目录下创建com.cloud.common包,在common包下再创建util.RespCode枚举类。

6.在cloud-market-service工程中引入Jar包依赖和工具包依赖

	<dependencies>
        <!--jar包依赖-->
        <dependency>
            <groupId>com.cloud</groupId>
            <artifactId>market-service-dependency</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!--工具包依赖-->
        <dependency>
            <groupId>com.cloud</groupId>
            <artifactId>market-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

2.集成Mybatis-plus

在此前的market-service-dependency中已经引入了mp的依赖.

2.1 创建商品微服务

在cloud-market-api下新建market-goods-api用于存储相关shop_goods表的bean和远程调用。
在cloud-market-service下新建market-goods-service用于存储shop_goods相关的微服务;在resource中添加mybatis-plus相关配置文件bootstrap.yml.

server:
  port: 8081
spring:
  application:
    name: market-goods
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.100.130:3306/shop_goods?userUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123
  cloud:
    nacos:
      config:
        file-extension: yaml
        server-addr: 192.168.100.130:8848
      discovery:
        server-addr: 192.168.100.130:8848
mybatis-plus:
  mapper-locations: mapper/*.xml # mybatis的xml配置文件的位置
  type-aliases-package: com.cloud.vip.market.*.model  # 对应的javabean取别名的包的位置
  configuration:
    map-underscore-to-camel-case: true # 驼峰转换,将数据库中的带有下划线的转换为驼峰命名规则
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 日志打印,增删改查方便查看日志

2.2 创建商品微服务

在docker中创建并运行nacos容器.

docker run  \
-e MODE=standalone \
-e MYSQL_SERVICE_HOST=192.168.163.136 \
-p 8848:8848 \
--name nacos \
-d nacos/nacos-server:1.4.1

容器启动成功之后,可以通过192.168.163.136:8848/nacos访问nacos,然后启动商品引导类,可以看到商品服务已经被注册到了nacos注册中心中:

**注意market-goods-service要依赖market-goods-api中的实体类model需要将对应的依赖导入**

2.3 使用mp插件编写基础代码

1.mapper层

使用mp插件,直接继承BaseMapper即可

@Mapper
public interface BrandMapper extends BaseMapper<Brand> {}
2.service层

使用mp插件,继承IService即可

//service
public interface BrandService extends IService<Brand> {}

//serviceImpl
@Service
public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements BrandService {}
3.controller层

无区分,正常

@RestController
@RequestMapping(value = "/brand")
public class BrandController {
    @Autowired
    private BrandService brandService;
}

2.4 分页查询代码

要想使用分页查询,首先需要在引导类中配置分页拦截器bean

	/**
     * 分页拦截器
     * @return
     */
    @Bean
    public PaginationInnerInterceptor paginationInnerInterceptor(){
        PaginationInnerInterceptor paginationInnerInterceptor=new PaginationInnerInterceptor();
        //设置数据类型
        paginationInnerInterceptor.setDbType(DbType.MYSQL);
        return paginationInnerInterceptor;
    }

然后编写查询条件,进行分页查询

	//serviceImpl
	@Override
    public Page<Brand> queryPageList(Brand brand, Long currentPage, Long size) {
        QueryWrapper<Brand> queryWrapper=new QueryWrapper<>();
        //根据name查询品牌;
        queryWrapper.like("name",brand.getName());
        return brandMapper.selectPage(new Page<Brand>(currentPage,size),queryWrapper);
    }
  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黒猫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值