关于配置SpringBoot这档子事
前言
后端相关知识已经好几年没碰过了,要开始秋招了,想着临时抱佛脚,于是开始学习SpringBoot。昨天就给配置了一下。这里记一些奇奇怪怪的问题或者找不到原因的问题。
关于Maven
在给IDEA 2020.2.2改Maven home directory的时候,遇到了一个很怪的事情。
我先是关闭工程,返回到初始界面,如下:(写博客此时已经没用2020.2.2了,换成了2020.1.4,至于换的原因我会在后面说明)

然后点击右下角的Configure -- Settings -- 搜索Maven,然后右边有Maven home directory选项:

改成了本地的自定义仓库,免得他跑到C盘里面占我的空间。返回初始界面修改配置,是为了对所有项目生效,当然也可以在项目界面进行全局修改,这里不再赘述。
这里有一个点就是,Maven目录下 -- conf -- setting.xml中的localReository字段的值,一定要和上图右边Local repository的值对上,不然还是会跑到C盘新建。
接下来就是神奇的事情了,新建了项目之后,按照流程准备用maven启动项目,在Terminal中输入mvn spring-boot:run,提示我mvn不是内部或外部命令,也不是可运行的程序,当时就有一万个问号从脑门飞过,因为我在cmd中是测试过的,maven已配置好了,怎么到了IDEA里面就不行了呢?
我又从项目界面,进入File -- Settings - 搜索Maven,一看右边的Maven home directory已然变成了默认的路径~\.m2\~,然后我又给他改成自定义的路径 -- Terminal输入 -- mvn不是内部或外部命令,也不是可运行的程序。
接着进行喜闻乐见的百度活动,果不其然没有百度到,百度说的解决方法一个都没用。
最后我抱着试一试的心态,把2020.2.2换成了2020.1.4。再进行一遍配置更改,新建项目。
诶,这次可以了。
关于Thymeleaf
SpringBoot自带了Thymeleaf的启动器,于是只需要在pom中添加依赖,即自动配置好Thymeleaf所需要的包

但是一开始我加进去之后,发现这一行代码标红spring-boot-starter-thymeleaf,怎么搞都不行,后来尝试点击了漂浮工具栏中的刷新Maven按钮,就好了
后来发现其实跟刷不刷新的没太大关系,新增了依赖之后,Maven会自动从镜像中下载需要的包,IDEA窗体下方会有下载的进度条,直到下载完成之前都会标红。
关于MyBatis
关于MyBatis启动器
不得不说SpringBoot是真的很方便,比之前的SSH项目好使多了,记得以前那个项目,连数据库的驱动jar包都要自己下好导入进去(或许是我没找对方法?)。
SpringBoot自带MyBatis启动器,在pom中添加依赖,就可以自动配置。
然后mybatis-spring-boot标红(标红基操,而且后面的问题已经出现端倪了),刷新Maven,恢复正常。
接下来的事情就是去启动类中添加Mapper扫描,即@MapperScan("dao包路径")
这个时候问题出现了,@MapperScan标红,提示无法解析该符号,百思不得其解,想来是依赖出现了问题,导致jar包的问题,遂去pom中查看。
经过反复确认之后发现误将mybatis-spring-boot-starter写为了mybatis-spring-boot,修改之后问题解决。
关于映射路径
按照正常流程,新建了entity包,Dao包,均与controller包平级。写了一个User实体类,一个UserDao接口。在resources文件夹下新建了mapper文件夹(这里有个要点是,右键新建只有Directory而没有package,因此要注意不能像建包那样用.符号来区别子包和父包,我是逐级新建的,博客有其他网友说可以用/符号来区分),在mapper文件夹中新建UserDao.xml文件,其中配置了crud的数据库操作方式,与UserDao相映射。
配置好之后,就启动SpringBoot准备进行测试,但是在测试过程中,报了Invalid bound statement (not found)的错误。后来发现是在下图的配置中,误将mybatis.mapper-locations写作了mybatis.mapper-location

经过这次bug排查,我总结了解决这个问题的几种方法:
- 检查xml文件的namespace是否正确
- Mapper.java的方法在Mapper.xml中没有,然后执行Mapper的方法会报此
- xxxMapper.java的方法返回值是List,而select元素没有正确配置ResultMap,或者只配置ResultType
- 如果你确认没有以上问题,请任意修改下对应的xml文件,比如删除一个空行,保存.问题解决
- 看下mapper的XML配置路径是否正确

浙公网安备 33010602011771号