移动项目:Springboot和微信小程序集成5

Posted 且行且思 对酒当歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动项目:Springboot和微信小程序集成5相关的知识,希望对你有一定的参考价值。

今日将完成后台逻辑:

昨天没有解决的日期存储问题:给予解决

说明:

1.@Column注解提示mysql用Date类型存储,不必要的

2.@Temporal注解作用:格式化Date类型,不必要

3.@JsonFormat注解中的Pattern也是不必要的,我们只用把日期对象格式化后变成一个String就可以了,另外注意时区问题

4.

5.接口:

移动项目:Springboot和微信小程序集成5

6.问题2,如何设置日期增加一天或两天?

Java中提供了Calendar类来实现这个功能,学过但是咱没有用过

方法:1.Calendar.getInstance();

日历是一个单例模式,没有多个不同的日历,相比于简单的Date对象,Calendar类可以灵活的操纵时间,再需要改动的时间的时候用到!

移动项目:Springboot和微信小程序集成5


我们发现set方法较为符合实际


开发时:先写业务逻辑,数据接口层的方法现用现写


7.问题3:我们发现要根据拼团池的id来获取用户信息,但是id是主键,意义不大?


解决方案:因此我们可以给拼团池增设一个流水号字段,在User实体类中增设一个数据类型,存储用户所在拼团池的流水号,将来用户获取他所在的拼团池,只需要获取用户的流水号,再由流水号查找拼团池就可.


8.问题4:我们在外键应用上有问题,

在拼团池的被删去时,我们应当将JPA自动维护的外键设置为空,而不是仍然存在.



先尝试:Cascade的Refresh操作:

移动项目:Springboot和微信小程序集成5

Bug1:

Validation failed for query for method public abstract int com.example.demo.Repositories.poolsRepositories.deleteByRandomPoolsid(long)!


原因:

Unable to locate Attribute with the the given name [randomPoolsid] on this ManagedTye


解决方案:

移动项目:Springboot和微信小程序集成5



Bug2:

org.springframework.beans.factory.BeanCreationException:

Error creating bean with name 'entityManagerFactory' defined in class path resource 

[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Unable to find column with logical name: RandomId in org.hibernate.mapping.Table(tb_pools) and its related supertables and secondary tables


没有办法找到映射的键:

移动项目:Springboot和微信小程序集成5



Bug3:

Exception encountered during context initialization - cancelling refres h attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'globalServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'poolsRepositories': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract com.example.demo.Beans.pools com.exaple.demo.Repositories.poolsRepositories.findByRandomPoolsid(long)! Unable to locate Attribute  with the the given name [randomPoolsid] on this ManagedType [com.example.demo.Beans.pools]


这个异常的原因是Jpa的命名规范:

移动项目:Springboot和微信小程序集成5

符合标准命名法后这样就能过了,

移动项目:Springboot和微信小程序集成5

移动项目:Springboot和微信小程序集成5

这里发现randomPoolsid在使用驼峰命名的时候,中间自动转换为了下划线和小写,所以可能是无法转换造成的.


利用Jpa初始化数据如下:

移动项目:Springboot和微信小程序集成5

没有问题:

我们预想.每个用户应当随机生成一个uid,我们通过uid看一下:


Bug4:NoSuchElementException:

表示什么呢?-----------------表示的东西是我是一个可以存储的对象,Optional,----------当值为空,直接get()时抛出该异常,这个异常很常见,需要先判断为空值!

在GlobalExceptionHandler中可以有相应的处理函数


Bug5:

Optional long parameter 'poolrandom' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.


惨案:

1.primitive type:原始的

2.那怎么办呢?------------------包装类的东西别忘了,要记得:Long/long

3.在继承JpaRepository接口时,小心泛型参数中的最后一个变量,他代表了id的类型


在建表的时候,全部使用包装类



以上是关于移动项目:Springboot和微信小程序集成5的主要内容,如果未能解决你的问题,请参考以下文章

springboot+微信小程序实现微信支付统一下单

微信小程序和微信怎么可以一起分屏?

CabloyJS的微信API对接模块:当前支持微信公共号和微信小程序

使用Appium 测试微信小程序和微信公众号方法

在阿里云上如何查看微信小程序接入口?

万物皆可集成系列:低代码对接微信小程序