IDEA写maven微信购物端项目的过程和注意重点(二)

本文介绍了一个商品管理系统的实现过程,包括实体类、DAO、Service层的设计,以及如何通过RESTful API提供服务。文中详细阐述了使用Spring Boot框架进行开发的具体步骤,并展示了如何利用JPA进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5. 买家商品(productInfo)

5.1、 流程一览

写productInfo商品相关的实体类,dao,service,test类

  1. 实体类
  • ProductInfo.java

@Entity //将数据库映射成对象的标签
@DynamicUpdate //动态更新标签,
@Data//自动get set标签!
@Id //主键标签
@GeneratedValue //自增标签

  1. dao接口
  • ProductinfoRepository.java

继承JpaRepository< ProductInfo,String> String是主键类型
写上一些其它需要使用的数据库方法,命名是有规定的

  • 测试接口,是否能连接上数据库,能否操作增删改查
  1. service接口和service实体类,service写具体需要的方法
  • 配置application.yml

server:
context-path: /sell

  • ProductService.java

  • ProductServiceImpl.java

继承ProductService接口
@Service //—service端的注解
@Autowired//------注入标签 ,产生dao对象,可以用jpa上操作数据库的方法

  • ProductStatusEnum //----Enum枚举状态
  • 测试service实体类
  1. API的VO,先确定需求,根据API文档写
  • ResultVO.java
  • ProductVO.java
  • ProductInfoOV.java

@Data
@JsonProperty // 代码中的参数名和返回到jsp页面中需要的参数名不同时使用

  1. control层,拼接VO,
  • BuyerProductController

@RestController //返回的jsp,所以用controller的标签
@RequestMapping("/buyer/product") //url前缀
@Autowired

  • ResultVOUtil // 工具类,生成拼接数据结果
  • 测试用网页打开http://localhost:8080/sell/buyer/product/list查看是否有数据库数据

5.1.1 实体类和dao类

注意dao中的方法命名 ↓ findByProductStatus

public interface ProductinfoRepository extends JpaRepository<ProductInfo,String>{
    /** 查询上架的商品 */
    List<ProductInfo> findByProductStatus(Integer productStatus);   //需要实体类无参构造函数
}

5.1.2 service接口和service impl实例类

注意: 查询所有带有的是分页信息,而不是普通的List

public interface ProductService {
    ProductInfo findOne(String productId);
    /** 查询所有在架商品列表*/
    List<ProductInfo> findUpAll();
    //分页查询所有页
    Page<ProductInfo> findAll(Pageable pageable);

    ProductInfo save(ProductInfo productinfo);
    // 加库存

    // 减库存
}

5.1.3 写service impl的测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductServiceImplTest {
    @Autowired
    private ProductServiceImpl productService;



    @Test
    public void findAll() throws Exception {
        PageRequest request = new PageRequest(0,2);
        Page<ProductInfo> productInfoPage = productService.findAll(request);
        System.out.println(productInfoPage.getTotalElements());
    }
}

5.1.4 API编写,OV类

确定API文档,写各层的OV类
重点注解:
@JsonProperty // 代码中的参数名和返回到jsp页面中需要的参数名不同时使用

@Data
public class ProductInfoOV {
    @JsonProperty("id")
    private String productId;

    @JsonProperty("name")
    private String productName;

    @JsonProperty("price")
    private BigDecimal productPrice;

    @JsonProperty("description")
    private String productDescription;

    @JsonProperty("icon")
    private String productIcon;
}

5.1.5 API编写,拼接control类拼接信息

@RestController     //返回的jsp,所以用controller的标签
@RequestMapping("/buyer/product")       //url前缀
public class BuyerProductController {
    @Autowired
    private ProductService productService;

    @Autowired
    private CategoryService categoryService;

    @GetMapping("/list")
    public ResultVO list() {
        // 1.查询所有上架商品(此处无翻页)
        List<ProductInfo> productInfoList = productService.findUpAll();

        // 2.查询类目(注意一次性查询,不要十个商品,循环查10次那样)
//        List<Integer> categoryTypeList = new ArrayList<>();
        // 传统方法
//        for(ProductInfo productInfo : productInfoList) {
//            categoryTypeList.add(productInfo.getCategoryType());
//        }

        //精简方法:java8  lambda
        List<Integer> categoryTypeList = productInfoList.stream()
                .map(e -> e.getCategoryType())
                .collect(Collectors.toList());

        List<ProductCategory> productCategoryList = categoryService.findByCategoryTypeIn(categoryTypeList);

        // 3.数据拼装
        List<ProductVO> productVOList = new ArrayList<>();
        for(ProductCategory productCategory : productCategoryList) {
            ProductVO productVO = new ProductVO();
            productVO.setCategoryType(productCategory.getCategoryType());
            productVO.setCategoryName(productCategory.getCategoryName());



            List<ProductInfoOV> productInfoOVList = new ArrayList<>();
            // 商品详情
            for(ProductInfo productInfo : productInfoList) {
                if(productInfo.getCategoryType().equals(productCategory.getCategoryType())) {
                    ProductInfoOV productInfoOV = new ProductInfoOV();
                    BeanUtils.copyProperties(productInfo, productInfoOV);
                    productInfoOVList.add(productInfoOV);
                }
            }
            productVO.setProductInfoOVList(productInfoOVList);
            productVOList.add(productVO);
        }
        return ResultVOUtil.success(productVOList);
    }
}

工具类的代码:

public class ResultVOUtil {
    public static ResultVO success(Object object) {
        ResultVO resultVO = new ResultVO();
        resultVO.setData(object);
        resultVO.setCode(0);
        resultVO.setMsg("成功");
        return resultVO;
    }

    public static ResultVO success() {
        return success(null);
    }

    public static ResultVO error(Integer code, String msg) {
        ResultVO resultVO = new ResultVO();
        resultVO.setCode(code);
        resultVO.setCode(code);
        resultVO.setMsg(msg);
        return resultVO;

    }
}

5.2、enum枚举类的使用

比如下面,经常有判断0,1,但是久了就不知道0和1是什么了

public class ProductServiceImpl implements ProductService {
    @Autowired
    ProductinfoRepository repository ;

    @Override
    public List<ProductInfo> findUpAll() {
        return repository.findByProductStatus(0);
        //使用enum后改为
        //return repository.findByProductStatus(ProductStatusEnum.UP.getCode());
    }
}

枚举类,注意@Getter标签

@Getter
public enum ProductStatusEnum {
    UP(0,"在架"),
    DOWN(1,"下架")
    ;
    private Integer code;
    private String message;
    ProductStatusEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
}
<think>我们正在处理用户的问题:在IntelliJ IDEA中集成微信支付支付宝支付所需的依赖配置。 根据引用内容,我们知道: 1. 引用[1]提到了Android前Java后集成支付宝支付微信支付的整体步骤。 2. 引用[2]提到了如果使用IDEAGradle构建,可以直接下载jar包导入,并提供了微信支付SDK Jar包的下载链接。同时提到Maven也可以导入jar包,但比较麻烦,在支付宝支付开发文章里有教程。 3. 引用[3]是一本关于支付宝与微信移动支付解决方案集成实战的书籍简介,提到了PHPJava的实现,但用户的问题是关于IntelliJ IDEA(Java)的。 用户明确要求的是依赖配置,所以我们主要关注如何通过构建工具(如Maven或Gradle)来添加依赖。 由于用户没有指定项目类型(如Android还是Java Web),但根据引用[1]中提到了Android前Java后,以及用户的问题是在IntelliJ IDEA中开发,我们假设用户需要的是Java后的依赖配置(因为Android的依赖配置与Java后不同,但引用中同时提到了两者,而用户没有明确,我们根据上下文判断可能是Java后,因为引用[2][3]都提到了Java)。 但是,引用[2]提到了两种方式:直接下载jar导入使用Maven。考虑到现代Java项目通常使用Maven或Gradle管理依赖,我们优先提供这两种方式的配置。 注意:支付宝微信支付官方并没有在公共Maven仓库中提供SDK,所以通常需要下载jar包然后手动安装到本地仓库或使用本地路径依赖。 根据引用[2]中提供的微信支付SDK Jar包下载链接,我们可以下载后手动安装。同样,支付宝SDK也需要从官网下载。 步骤: 1. 下载SDK的jar包(微信支付宝)。 2. 将jar包安装到本地Maven仓库(如果使用Maven),或者直接作为本地jar依赖(GradleMaven都支持)。 另外,引用[3]中提到支付宝与微信移动支付解决方案集成实战,我们可以参考其中的配置,但具体依赖需要根据SDK版本来定。 由于我们无法得知用户具体使用的SDK版本,这里以通用方式提供配置示例。 假设用户使用Maven: 对于微信支付: 首先,下载微信支付SDK的jar包(例如:wechat-sdk-xxx.jar)。 然后,使用Maven命令安装到本地仓库: ``` mvn install:install-file -Dfile=wechat-sdk-xxx.jar -DgroupId=com.wechat -DartifactId=wechat-sdk -Dversion=1.0.0 -Dpackaging=jar ``` 在pom.xml中添加依赖: ```xml <dependency> <groupId>com.wechat</groupId> <artifactId>wechat-sdk</artifactId> <version>1.0.0</version> </dependency> ``` 对于支付宝支付: 同样,下载支付宝SDK(例如:alipay-sdk-java-xxx.jar),然后安装到本地仓库: ``` mvn install:install-file -Dfile=alipay-sdk-java-xxx.jar -DgroupId=com.alipay -DartifactId=alipay-sdk -Dversion=3.7.4.ALL -Dpackaging=jar ``` 在pom.xml中添加依赖: ```xml <dependency> <groupId>com.alipay</groupId> <artifactId>alipay-sdk</artifactId> <version>3.7.4.ALL</version> </dependency> ``` 如果用户使用Gradle: 首先,同样需要下载jar包。 然后,可以将jar包放在项目的libs目录下(例如:项目根目录/libs)。 在build.gradle文件中添加依赖: ```groovy dependencies { // 微信支付 implementation files('libs/wechat-sdk-xxx.jar') // 支付宝支付 implementation files('libs/alipay-sdk-java-xxx.jar') } ``` 另外,引用[2]中提到了一个优快云下载链接,用户可以去下载微信支付SDK的jar包。而支付宝SDK可以在支付宝开放平台下载。 注意:支付宝SDK的版本可能会更新,用户需要根据实际情况选择版本。 此外,我们还需要注意,支付宝SDK可能依赖其他第三方库,比如fastjson等,这些也需要在项目中配置。同样,微信支付SDK可能也有其他依赖。因此,在添加SDK后,需要根据错误提示补充相关依赖。 例如,支付宝SDK可能需要的其他依赖(具体根据下载的SDK包中的README或文档): ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> ``` 微信支付SDK可能需要的依赖(以微信支付Java SDK为例,它可能依赖commons-codec等): ```xml <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.15</version> </dependency> ``` 由于具体的依赖关系可能会随着SDK版本变化,建议用户查看官方文档或SDK包内的说明。 总结步骤: 1. 下载微信支付支付宝支付的Java SDK jar包。 2. 根据项目使用的构建工具Maven或Gradle)配置依赖。 3. 添加SDK可能需要的其他依赖。 因此,我们可以这样回答用户:</think>### IntelliJ IDEA 中集成微信支付与支付宝支付的依赖配置指南 #### 1. **微信支付依赖配置** 微信支付官方未提供 Maven 中央仓库依赖,需手动下载 SDK 并导入: 1. **下载 SDK** - 获取微信支付 Java SDK 的 JAR 包([官方下载链接](https://download.youkuaiyun.com/download/m_sicily/10643021)微信开放平台)[^2]。 2. **手动导入 JAR** - 在 IntelliJ IDEA 中: ```text File → Project Structure → Modules → Dependencies → "+" → JARs or directories ``` 选择下载的 `wechatpay-sdk-xxx.jar` 文件。 3. **Gradle 配置(可选)** 若项目使用 Gradle,在 `build.gradle` 中添加: ```groovy dependencies { implementation files('libs/wechatpay-sdk-xxx.jar') // 本地 JAR 路径 } ``` #### 2. **支付宝支付依赖配置** 支付宝 SDK 支持 Maven 中央仓库,推荐直接添加依赖: 1. **Maven 配置** 在 `pom.xml` 中添加: ```xml <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.35.7.ALL</version> <!-- 使用最新版本 --> </dependency> ``` 2. **Gradle 配置** 在 `build.gradle` 中添加: ```groovy dependencies { implementation 'com.alipay.sdk:alipay-sdk-java:4.35.7.ALL' } ``` 3. **手动导入 JAR(备用)** 若无法使用 Maven,从[支付宝开放平台](https://open.alipay.com)下载 SDK JAR,按微信支付相同方式导入。 #### 3. **关键依赖补充** 两者均需额外依赖 HTTP 客户工具库: ```xml <!-- 通用依赖(Maven 示例) --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> <!-- HTTP 请求支持 --> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.9</version> <!-- JSON 解析 --> </dependency> ``` #### 4. **配置验证** 1. 同步依赖: - Maven:右键 `pom.xml` → **Maven → Reload Project** - Gradle:点击工具栏 **Gradle → Refresh** 2. 检查依赖: - 在 IDEA 的 **Project → External Libraries** 中确认 SDK 是否存在。 > **注意**:微信支付需额外配置证书(`apiclient_cert.p12`),支付宝需配置应用私钥(`app_private_key.pem`),这些文件需放置在 `resources` 目录下[^1][^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值