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();
}
}