1.单元测试
我当时单测的时候,没有在test类里面去写,是在calss类里面写了一个入口函数,直接调用的类的方法,如果功能代码有用到spring的注解如图
这样的不能直接注入成功的,因为spring根本没有运行,直观的错误提示就是一直在报错空指针,因为实例contratDAO就是null,如图:
ps:这个问题我找了2天,刚开始以为字段缺失没有值的原因,网上各种找,最后问了RD发现这个原因,以后单测一定要用正常的单元测试。
代码错误示范如图:
2.单元测试的时候提示bean
遇到这种bean注入失败的情况,8成就是class类没有@Component注解,这样就会提示bean失败,加上即可。具体为什么要加我不知道啊........回头我查查补上吧
3..插入失败,提示表主键id没有默认值
解决方案:
这个问题我找了好久,最后发现mysql表结构设计有问题,主键id不是自增的原因。勾选“Auto inc”自动递增。
因为是insert操作,所以DO实例插入的时候是没有主键id的。
3.批量写入
首先说下怎么遇到这个问题,我刚开始插入多少条不断for循环一天天插入(我之前用python的ORM写库的时候就是这么弄得),如图:
但是想法有点天真,最后报错是数据库字段id不能递增(截图没存),后来网上找了一下,发现mybatis批量插入需要在mapping文件写sql语句:
mapping循环写入如图:
mapping写好之后,在DAO层把循环写入的接口加上,如图:
思路:DAO->mapping→mysql 自动批量插入。
路肯定不会这么顺利的,
坑1 mapping的命名空间写错:
用myabtis自动生成DAO脚本不会出现这个问题,名称不是我想要的,我后面手动改了一下,造成这个坑,
报错如图:
解决方案:把namespace的名称改成DAO/**** 一致即可。
坑2 DO层变量名称不一致,这个很简单,根据报错改对就行了:
参考文档:https://www.cnblogs.com/admol/articles/4248159.html
坑3:报错 mybatis配置时出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
这个昨天排查了好久,一直找不到原因后来发现mapping文件下 ***Mapper写错了,应该是自动生成配置的generatorConfig.xml字段书写有错误导致。
出现类似这种也有排查顺序:
1:检查xml文件所在的package名称是否和interface对应的package名称一一对应
2:检查xml文件的namespace是否和xml文件的package名称一一对应
3:检查函数名称能否对应上
4:去掉xml文件中的中文注释
5:随意在xml文件中加一个空格或者空行然后保存