从0到1搭建网上商城之SpringBoot+MyBatis骨架篇

mysql数据库环境搭建

  • 下载并安装mysql5.7版本,下载地址:https://dev.mysql.com/downloads/installer/
  • 设置数据库帐号密码:root root
  • 下载并安装客户端连接工具Navicat,下载地址:http://www.formysql.com/xiazai.html
  • 创建数据库fine-mall

使用IDEA初始化一个SpringBoot项目


添加项目依赖

在pom.xml中添加相关依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <!--SpringBoot通用依赖模块-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--MyBatis分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.10</version>
        </dependency>
        <!--集成druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!-- MyBatis 生成器 -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.3</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.2</version>
        </dependency>
        <!--Mysql数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
    </dependencies>

修改SpringBoot配置文件

在application.yml中添加数据源配置和MyBatis的mapper.xml的路径配置。

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/fine-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root
    
mybatis:
  mapper-locations:
    - classpath:mapper/*.xml
    - classpath*:com/**/mapper/*.xml

Mybatisplus generator文件

package org.yxin.mpg;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;


public class MybatisPlusGenerator {
    private static final String DBUrl="jdbc:mysql://localhost:3306/fine-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
    private static final String DBUsername="root";
    private static final String DBPassword="root";
    private static final String OutputDir ="F:\\source\\fine-mall-03\\admin\\src\\main\\java";
    private static final String[] Include= new String[]{"pms_product"};

    public static void main(String[] args) {
        AutoGenerator mpg = new AutoGenerator();

        //数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUrl(DBUrl);
        dsc.setUsername(DBUsername);
        dsc.setPassword(DBPassword);
        mpg.setDataSource(dsc);
        GlobalConfig gc = new GlobalConfig();
        gc.setDateType(DateType.ONLY_DATE);
        gc.setOutputDir(OutputDir); //生成文件输出目录
        gc.setFileOverride(true);//覆盖已有文件
        gc.setOpen(false);//是否打开输出目录 默认true
        gc.setSwagger2(true);
        gc.setBaseResultMap(true);  //开启BaseResultMap 默认false
        gc.setBaseColumnList(true); //开启BaseColumnList 默认false
        gc.setAuthor("yxin"); //作者
        gc.setIdType(IdType.AUTO); //自增
        gc.setServiceImplName("%sService");//service impl 命名方式
        mpg.setGlobalConfig(gc);

        //包配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("org.yxin");
        pc.setServiceImpl("service");
        mpg.setPackageInfo(pc);

        //策略配置
        StrategyConfig strateg =new StrategyConfig();
        strateg.setNaming(NamingStrategy.underline_to_camel);
        strateg.setRestControllerStyle(true);
        strateg.setControllerMappingHyphenStyle(true);
        strateg.setEntityTableFieldAnnotationEnable(true);
        strateg.setEntityLombokModel(true);
        strateg.setInclude(Include);
        mpg.setStrategy(strateg);

        //关闭默认xml生成
        TemplateConfig tc = new TemplateConfig();
        tc.setService(null);
        mpg.setTemplate(tc);



        mpg.execute();
    }



}

实现Controller中的接口

package org.yxin.controller;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ser.std.StdKeySerializers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import org.yxin.common.api.CommonPage;
import org.yxin.common.api.CommonResult;
import org.yxin.entity.PmsBrand;
import org.yxin.entity.req.QueryPmsBandReq;
import org.yxin.entity.res.QueryPmsBandRes;
import org.yxin.service.PmsBrandService;

import java.util.List;

/**
 * <p>
 * 品牌表 前端控制器
 * </p>
 *
 * @author yxin
 * @since 2024-01-06
 */
@Api(tags = { "商品品牌管理接口" })
@RestController
@RequiredArgsConstructor
@RequestMapping("/brand")
public class PmsBrandController {
    private final PmsBrandService pmsBrandService;

    @ApiOperation("测试接口1")
    @RequestMapping(value = "/query",method = RequestMethod.GET )
    @ResponseBody
    @PreAuthorize("hasAuthority('pms:brand:read')")
    public CommonPage queryPmsBand(@RequestParam(value = "pageNum" ,defaultValue = "1")
                                       @ApiParam("页码") Integer pageNum,
                                       @RequestParam(value = "pageSize",defaultValue="10")
                                       @ApiParam("每页数量") Integer pageSize){
        PageHelper.startPage(pageNum,pageSize);
        //之后进行查询将制动分页
        List<PmsBrand> list = pmsBrandService.list();
//        PageInfo<PmsBrand> pageInfo = new PageInfo<PmsBrand>(list);
        return CommonPage.restPage(list);
    }

    @ApiOperation("测试接口2")
    @GetMapping(value = "/query2")
    @ResponseBody
    public List<QueryPmsBandRes> queryPmsBand2(){
        List<QueryPmsBandRes> list = pmsBrandService.queryByCount();
        return list;
    }

    @ApiOperation("测试接口3")
    @PostMapping(value = "/query3")
    @ResponseBody
    public List<QueryPmsBandRes> queryPmsBand3(@RequestBody QueryPmsBandReq req){
        List<QueryPmsBandRes> list = pmsBrandService.queryByCount();
        return list;
    }

    @ApiOperation("测试接口4")
    @PostMapping(value = "/query4")
    @ResponseBody
    public CommonResult queryPmsBand4(@RequestBody QueryPmsBandReq req){
        List<QueryPmsBandRes> list = pmsBrandService.queryByCount();
        return  CommonResult.success(list);
    }


}

添加Service接口 

package org.yxin.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.yxin.entity.PmsBrand;
import org.yxin.entity.res.QueryPmsBandRes;
import org.yxin.mapper.PmsBrandMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 品牌表 服务实现类
 * </p>
 *
 * @author yxin
 * @since 2024-01-06
 */
@Service
public class PmsBrandService extends ServiceImpl<PmsBrandMapper, PmsBrand>  {

    /**
     * 查询品牌列表
     * @return
     */
    public List<QueryPmsBandRes> queryByCount(){
        LambdaQueryWrapper<PmsBrand> wrappers = Wrappers.lambdaQuery();
        wrappers.eq(PmsBrand::getShowStatus,"1")
                .ge(PmsBrand::getProductCount,77);
        List<QueryPmsBandRes> list = this.list(wrappers).stream().map(this::toQueryPmsBandRes).collect(Collectors.toList());
        return list;
    };

    /**
     * 数据表查询转换
     * @param pmsBrand
     * @return
     */
    public QueryPmsBandRes toQueryPmsBandRes(PmsBrand pmsBrand){
        return QueryPmsBandRes.builder()
                .name(pmsBrand.getName())
                .brandStory(pmsBrand.getBrandStory())
                .logo(pmsBrand.getLogo())
                .bigPic(pmsBrand.getBigPic())
                .factoryStatus(pmsBrand.getFactoryStatus())
                .productCommentCount(pmsBrand.getProductCommentCount())
                .productCount(pmsBrand.getProductCount())
                .showStatus(pmsBrand.getShowStatus())
                .build();
    }
}
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值