1.7 工程测试 通过一个案例”根据Id查询商户“的开发去熟悉项目架构的基本开发方法。 1.7.1生成代码 使用mp的自动生成工程生成entity、mapper等文件。 1)修改生成类中的数据库链接,连接
1.7 工程测试
通过一个案例”根据Id查询商户“的开发去熟悉项目架构的基本开发方法。
1.7.1生成代码
使用mp的自动生成工程生成entity、mapper等文件。
1)修改生成类中的数据库链接,连接huiminpay_merchant_service数据库
2)设置包路径
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.huiminpay");
3)运行生成类,输入模块名:merchant
生成成功:
将生成的entity、mapper拷贝到huiminpay-merchant-service工程
1.7.2Mybatis-Plus配置
1.7.2.1配置连接池Druid
- 在nacos中新建连接池Druid配置:spring-boot-starter-druid.yaml,Group为:COMMON_GROUP
内容如下:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/oauth?useUnicode=true
username: root
password: yourpassword
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: true
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
filter:
stat:
slow-sql-millis: 1
log-slow-sql: true
filters: config,stat,wall,log4j2
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
session-stat-enable: false
session-stat-max-count: 1000
principal-cookie-name: admin
principal-session-name: admin
profile-enable: true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
allow: 127.0.0.1
deny: 127.0.0.1
reset-enable: false
login-password: admin
login-username: admin
aop-patterns: com.huiminpay.*.service.*
- 商户服务覆盖部分配置(数据库名和用户名密码):merchant-service.yaml
# 覆盖spring‐boot‐starter‐druid.yaml的项目
spring:
datasource:
druid:
url: jdbc:mysql://127.0.0.1:3306/huiminpay_merchant_service?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai&useSSL=false
username: root
password: yourpassword
- 应用配置到项目中:bootstrap.yml
- refresh: true
data-id: spring-boot-starter-druid.yaml # spring boot starter druid配置
group: COMMON_GROUP # 通用配置组
1.7.2.2配置Mybatis-Plus
- 在nacos中添加配置:spring-boot-mybatis-plus.yaml,Group为:COMMON_GROUP
mybatis-plus:
configuration:
cache-enabled: false
map-underscore-to-camel-case: true
global-config:
id-type: 0
field-strategy: 0
db-column-underline: true
refresh-mapper: true
typeAliasesPackage: com.huiminpay.user.entity
mapper-locations: classpath:com/huimin/*/mapper/*.xml
- 商户服务覆盖部分Mybatis-Plus配置:merchant-service.yaml
mybatis-plus:
typeAliasesPackage: com.huiminpay.merchant.entity
mapper-locations: classpath:com/huiminpay/*/mapper/*.xml
- 应用配置到项目中:bootstrap.yml
- refresh: true
data-id: spring-boot-mybatis-plus.yaml # spring boot mybatisplus配置
group: COMMON_GROUP # 通用配置组
- 添加分页和性能分析插件:MybatisPlusConfig
package com.huiminpay.merchant.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author Administrator
* @version 1.0
**/
@Configuration
@MapperScan("com.huiminpay.**.mapper")
public class MybatisPlusConfig {
/**
* 分页插件,自动识别数据库类型
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
/**
* 启用性能分析插件
*/
@Bean
public PerformanceInterceptor performanceInterceptor(){
return new PerformanceInterceptor();
}
}
1.7.3创建接口
在huiminpay-merchant-api下新建商户接口:MerchantService
package com.huiminpay.merchant.api;
import com.huiminpay.merchant.api.dto.MerchantDTO;
public interface IMerchantService{
/**
* 根据ID查询商户信息
* @param merchantId
* @return
*/
MerchantDTO queryMerchantById(Long merchantId);
}
注意:DTO类型的对象作为service层传输的对象。
dto:表示的是 vo和entity的一个中间转换对象,是vo或entity对象中属性的一个子对象。当前端传来vo数据,我们提取vo中的数据到dto中,再将dto的数据处理后全部移动到entity中进行数据的保存。反之亦然
在huiminpay-merchant-api工程 定义MerchantDTO
package com.huiminpay.merchant.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel("商户基本信息")
@Data
public class MerchantDTO implements Serializable {
/**
* 主键
*/
// @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 商户名称
*/
@ApiModelProperty(name = "merchantName",value = "商户名称",example = "黄焖鸡")
private String merchantName;
/**
* 企业编号
*/
@ApiModelProperty(name = "merchantNo",value = "企业编号",example = "10000")
private String merchantNo;
/**
* 企业地址
*/
private String merchantAddress;
/**
* 商户类型
*/
private String merchantType;
/**
* 营业执照(企业证明)
*/
private String businessLicensesImg;
/**
* 法人身份证正面照片
*/
private String idCardFrontImg;
/**
* 法人身份证反面照片
*/
private String idCardAfterImg;
/**
* 联系人姓名
*/
private String username;
/**
* 联系人手机号(关联统一账号)
*/
private String mobile;
/**
* 联系人地址
*/
private String contactsAddress;
/**
* 审核状态 0-未申请,1-已申请待审核,2-审核通过,3-审核拒绝
*/
private String auditStatus;
/**
* 租户ID,关联统一用户
*/
private Long tenantId;
private String password;
}
@ApiModel和 @ApiModelProperty是Swagger注解后边会学习。
实现类:
package com.huiminpay.merchant.service;
import com.huiminpay.merchant.entity.Merchant;
import com.huiminpay.merchant.mapper.MerchantMapper;
import com.yh.merchant.api.IMerchantService;
import com.yh.merchant.api.dto.MerchantDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
/**
* <p>
* 服务实现类
* </p>
*
* @author suozhenhua
* @since 2021-03-15
*/
@Slf4j
@org.apache.dubbo.config.annotation.Service
public class MerchantServiceImpl implements IMerchantService {
@Autowired
MerchantMapper merchantMapper;
@Override
public MerchantDTO queryMerchantById(Long merchantId) {
Merchant merchant = merchantMapper.selectById(merchantId);
MerchantDTO merchantDTO = new MerchantDTO();
BeanUtils.copyProperties(merchant,merchantDTO);
return merchantDTO;
}
}
1.7.4创建接口实现
在huiminpay-merchant-service下新建商户接口实现类:MerchantServiceImpl,并添加新建商户测试方法 本方法从huiminpay_merchant_service数据库的merchant表查询数据。
public MerchantDTO queryMerchantById(Long merchantId) {
Merchant merchant = merchantMapper.selectById(merchantId);
MerchantDTO merchantDTO = new MerchantDTO();
BeanUtils.copyProperties(merchant,merchantDTO);
return merchantDTO;
}
1.7.5应用层
在huiminpay-merchant-application下添加如下pom依赖:
<dependency>
<groupId>com.huiminpay</groupId>
<artifactId>huiminpay-merchant-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
在huiminpay-merchant-application下新建商户Controller:MerchantController,并调用商户中心服务提供的新 建商户接口
package com.huiminpay.merchant.controller;
import com.yh.merchant.api.IMerchantService;
import com.yh.merchant.api.dto.MerchantDTO;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MerchantController {
@Reference
IMerchantService merchantService;
@GetMapping("/merchants/{id}")
public MerchantDTO queryMerchantById(@PathVariable("id") Long id) {
MerchantDTO merchantDTO = merchantService.queryMerchantById(id);
return merchantDTO;
}
}
- 启动商户平台应用和商户服务
- 访问 http://localhost:57010/merchant/merchants/具体的id值 测试查询商户
【本文由:香港云服务器 http://www.558idc.com/ne.html 复制请保留原URL】如果merchant表没有数据可手动添加后再行测试。