mybatis插入问题总结

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文件中加一个空格或者空行然后保存

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值