• 踩坑日记:行之Blog微信小程序开发过程中碰到的问题及处理方案(持续更新...)


    此开源项目是笔者的第一个自己动手写的后端项目......之前一直都是只看书和视频去不停学理论却很少去动手,最近感觉自己还是缺少项目的磨练,于是在每天安排固定的学习时间之余,开始动手自己实现一些项目。在开始做项目后,发现了自己很多的问题,也踩了一些坑,于是把这些记录下来,当作第一个项目的纪念吧.....项目地址放在下面(内有项目介绍),因为是第一个项目,所以求轻喷.....

    github地址

    微信小程序端Java后端管理后台前端

    gitee地址

    微信小程序端Java后端管理后台前端

    问题:*.YML文件没有spring小叶子图标

    就是像下图这样....

    • 首先,进入setting下的这里,如图:

    • 如果发现图中第四个蓝圈的区域没有*.yml的话就点击右边+号把它加上去,再点击 Apply就可以了。

    • 但是...我还真是个倒霉蛋..我发现我原本就有这个*.yml的,但是我.yml文件就是没有spring小叶子图标啊,然后我气急败坏地把它删掉了(咋删的:选中,点击右边的-号),然后又尝试性地加了回来,点击了下apply,结果....,yml文件就有spring小叶子图标了...真是柳暗花明啊..

    • 总结:最后...引用一句“名言”:“重启解决90%的问题“。

    问题:@Mapper报红

    在已经在maven中导入相关依赖后,@Mapper报错。看了右边maven依赖,发现有导入相关依赖啊,咋回事啊...

    不懂就问...于是去百度了下,百度时用的是关键词“@Mapper报红”,搜索出来的都是mybatis版本的问题,要换版本,但是我用的版本很高了啊....尽管如此,我依旧试了下,发现....没用。

    看了半天,发现右边maven中的相关模块是灰色的...这咋回事

    百度了下,很快嗷,结果出来了,说是maven中的设置把我这个模块给忽略了.....当时我就流眼泪了,这咋忽略了呢...于是我马上去maven的设置中看,果然,如下图,maven把这个模块给我忽略了...

    于是我马上把它取消掉,果然,@Mapper不报红了........感谢搜索引擎,感谢踩过坑的前辈.....

    Invalid bound statement (not found) 问题

    需要提前说明的是,此项目是一个多模块项目,以下问题主要是多模块下的场景。

    跟据我所遇到的情况来说,这种问题的发生原因有两种:

    • 一种发生在service
    • 一种发生在dao

    问题在service层出现时的解决方法

    啥意思呢?首先,我们先来看第一种的错误信息,如图:

    可以看到,说的是在service下的test方法(这个方法是自己写的,其中调用了dao的方法)出现了问题,根据字面意思就是无效的绑定说明。

    此时需要检查启动类的MapperScan注解,此时我的注解如下图

    而我的包结构如下:

    这样一来,MapperScan就会扫描com.xingzhi下的service接口了,但在service接口中没找到映射的mapper,所以报错了。我们需要把扫描的路径改为如下(把路径限定在只有mapper接口的包下面):

    这样,就解决问题了。

    问题在dao层出现时的解决方法

    这种问题其实在多模块项目里比上一个问题好解决,但是也是一个容易忽略的问题,错误打印如下:

    可以看出,问题发生在dao层(这里我的dao用mapper来命名了),这种问题一般是dao的接口类和mapper没有对上,可能会有以下几种原因:

    • mapper.xml中的一些对应信息如(namespace、id)没对上
    • mybatis中的mapper-locations没有定位到正确的mapper的位置

    第一情况解决方法很简单,检查...改正

    主要是第二种情况,第二种情况情景还原如下:

    没修改前我的mapper-locations如下:

    因为我的是多模块项目,且我的mapper是在其他模块的。在这种情况下,mybatis扫描不到其他模块的mapper,这时我们把其改为下图所示就能解决问题了。

    小小总结以下:遇到这两个问题我查了很多资料,方得以解决。我还是太菜了啊....基础不过关啊......还要努力..

    spring cloud gateway 500报错

    详细报错内容:

    就是类型转换的问题

    首先,我们先排查下gateway模块下有没有这个

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    

    或者依赖其他的模块中有没有,有的话就用exclusions把它去掉

    如果还没解决问题的话就看看有没有用到servlet的包,因为访问页面时候是通过servlet进行远程调用获取结果集的,而访问网关是用webflux直接接收的,所以当gateway网关微服务引入servelt时候,就会使用servlet接收,但是响应却是webflux,最后会出现类型转换异常的错误。

    解决方案:

    • 去掉 spring-boot-starter-web 依赖
    • 去掉有 servlet 的依赖

    持续更新中......

  • 相关阅读:
    略少面试题 项目中用到的技术详解 有用
    python在VM+centos7 下面的安装
    shell基础09 归档数据
    shell基础10 sed,gawk和shell的对比
    shell练习03 mysql在脚本中的使用
    shell练习03 安装mysql
    shell基础09 gawk程序(上)
    shell练习02 归档数据文件
    shell基础08 sed命令行编辑器(上)
    shell基础07 函数
  • 原文地址:https://www.cnblogs.com/xunxian/p/14109557.html
Copyright © 2020-2023  润新知