SpringBoot爬坑合集
以此纪念这段疯狂debugging的日子
总结:springboot不禁使人又爱又恨,他独特的微服务在提供功能的同时也给开发者带来了一定的使用难度(疯狂折磨),以下将分为…个模块对开发过程中的错误进行总结。(序号不代表先后)
代码之外:
-
数据库方面(涉及的数据库操作)
-
存储过程的建立
delimiter $$ ----------更改结束符方便在存储过程中写执行语句 create procedure updateGoods (IN g_name varchar(255),IN g_num int) begin update goods set goods.goods_num = goods.goods_num+g_num where goods_name = g_name; end $$ delimiter ; -----------将结束符改回分号
- 触发器的建立:利用navicat可快速形成,此处略过
-
SpringBoot方面
- 各类mvn报错
- spring-boot-maven-plugin报错:加上version,版本要和springboot一致
- 停止Lo4j2的pom:
- 注释pom依赖
- 更新mvn
- application.properties里注释对lo4j2的配置
- 注释掉logger变量以及logger的使用(Listener、quartz、service、Impl)
- web端(Thymeleaf)
- htmlhtml文件要放在template类里
- thyleaf配置要正确:pom依赖,application.properties的路径
- controller没有返回找不到template:换个路径名字,save all ,重开(到最后没有办法的招数-.- maybe成功)
- ajax返回error:建议Controller层用@RestController,我采用@Controller+对应的方法@ResponseBody导致返回的报文一直会被error捕获,但改成RestController就不会
- 注意事项
- 命名:建议采用驼峰命名法,springboot强大的自匹配能力会根据变量名匹配字段
- 单元测试:很重要!!!每个独立的层完成后都要编写单元测试案例,测试功能(包括mapper,service定义的功能)
进入主题:
- 项目结构方面:项目为(Thyemleaf+Mybatis+Mysql+Springboot)
- 实体类:数据库对象的映射,属性为数据库对应表的同名column(aka:Entity == Model == Bean)
- Mapper(Mapper接口):MyBatis编辑sql的接口(aka:Dao ,记得加@Mapper注解!)
- Mapper.xml:位于resource的自定义目录下(通常是mapper),存放自定义的sql语句
- 配置方面
- 注意在application.properties里配置的mapper.xml路径
- 格式方面
- 记得查看namespace是否正确(namespace = “对应的mapper接口位置”)
- 各种属性
- select属性的resultType=“实体类的地址”
- 注意检查语句的正确与否(表名,sql语法…)
- 自定义的resultSet:映射实体属性和表名,将不同的属性一一对应起来。
- 写mapper时需要提供占位符(即#{变量名}),传数据时,要根据自己传的数据的格式去修改占位符(在Mapper接口层使用@PathVariable注解将数据映射到对应的变量上)才能找到数据。
- 某些错误分析
- 对应的xml文件的sql语句写错会导致无法创建bean(报错为creating xx fail,但其实是mapper错误了)
- 写mapper时需要提供占位符(即#{变量名}),传数据时,要根据自己传的数据的格式去修改占位符才能找到数据。
- 配置方面
- Service:业务接口
- ServiceImpl:接口方法的具体实现(记得加上@Service注解!)
其他
- Impl使用orElse函数报错:repository有没有继承jpa的类
- 错误:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
solution: 查看application.property的配置 - 问题:Entity doesnt have a primary key
soulution:import的Id包为persistant而不是annotation - 使用mail时报错:5XX
- 网易的邮箱可以,qq邮箱不行,都要打开smtp
- 查看垃圾箱
- 修改消息
- Unsatisfied dependency expressed through bean property ‘sqlSessionFactory’
看看mapper文件的mapper的注解有没有加!!!!
最后:something want to say
- 错误的价值在于成长
- 有时候思考跟不上了,就是要冥想、游戏休息,怎么都行,恢复精力回来
Stay foolish, Stay Hungry,Stay Happy>.<