mybatis报错合集!!!!

1.Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.mtsbw.ma.wms.newErp.dao.productWeight.IAddProdWeightDaogetIdByNum

解决方法:1.Mapper的namespace配错了

                  2.Mapper的对应操作的id配错了

                    3.dao层和service的依赖关系写成其他类了!

2.org.springframework.jdbc.BadSqlGrammarException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符

解决方法:看看你的语句后面是不是有冒号!Mybatis里是不允许写冒号的!

3.Mapped Statements collection already contains value for......

解决方法:1.如果你想引用resultMa拍,记得在标签中结果类型要写成resultMap   而不是resultType

2.id重复了(不管重复不重复你都改一个id试试,我这一次明明没重复,他就是报错,我改了id,然后就可以了)!


4.org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found. Available parameters are [list]

1.parameterType="java.util.List"

2.赋值的对应属性名写错了

3.temp写错了

4.foreach中高端collection=“list”写错了

5.注意temp是对象还是基本数据类型。对象是temp点(.)属性 ,如果只是基本数据类型,直接用temp不要再点(.)了

6.批量插入时,使用map包装list,collection的名字使用map中list对应的key。

5.java.sql.SQLException: Field 'MARKET_SORT' doesn't have a default value

插入数据库地方时候,有列没有被赋值,而数据库中规定该列值不能为空!

6.truncateTable is ambiguous in Mapped Statements collection (try using the full name including the namespace, or rename one of the entries)

查看自己的命名空间,就是看看sql<>里的id,会不会重复,最好加上namespace!

7. Cause: java.lang.UnsupportedOperationException

 resultType 指的是 select 返回的每一条记录 的类型,而不是所有记录组成的类型。所以一般配resultMap


8.Mapped Statements collection does not contain value for .....

1.仔细看dao文件定义的命名空间和mapper文件的命名空间名字一样吗

2.看看mapper文件的id名字是不是重读了。!

9.Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

    1:检查一下表的主键是不是索引!不是索引要添加成索引!

10.mysql在mybatis中的批量更新!!!!和oracle是不一样的!!!

id="updateMultiThreading" parameterType="java.util.List">
  close="" collection="list" index="index" item="item" open="" separator=";">
  update multi_threading
    
      thread_name = #{item.threadName,jdbcType=VARCHAR},
      last_modify_date = now(),
      control_num = #{item.controlNum,jdbcType=VARCHAR}
    
    WHERE id = #{item.id,jdbcType=INTEGER}
  
这么写没错,执行还是会报错!!!因为mysql执行批量更新需要配置!!!在mysql的jdbc连接url后面加上
allowMultiQueries=true

jdbc.url=jdbc:mysql://localhost:3306/nulidexiaoma?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8
这样就可以执行了!!!

11.mybatis使用selectOne查询返回Integer,报NullPointException空指针异常

如果我们查询出来的值为null,因为mybatis包装了自动拆箱装箱,会用到integer的intValue方法,所以会报指针!!!所以一定要对查出来的值做判断或者用select NVL(结果, 0) from ......!!这样当结果查出为null时,会自动返回0,就不会空指针了

12.org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'INTEGER' in 'class com.mtsbw.ma.wms.newErp.dao.sfgrn.model.SfGrnExt'

这个错误很莫名其面,至今不知道为为什么,希望有人可以帮我解答一下。

在用selectOne(),查询返回一个数字,传入的参数是一个实体对象,给匹配参数#{xxxx,jdbcType=INTEGER},就是一直报Integer没有get!,可是intger是类型啊,一般不都是报XXX没有get啊,所以把‘jdbcType=INTEGER’去掉就可以了,至今不知道为什么!!!

13.java.sql.SQLException: 数字溢出

查询数据库获得的数字,超出了int的长度,需要用long类型接收或者更长的数字类型!

14.org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: An invalid property 'jdbcType ' was found in mapping #{nearbyDay,jdbcType = INTEGER}.  Valid properties are javaType,jdbcType,mode,numericScale,resultMap,typeHandler,jdbcTypeName

jdbcType = INTEGER 等号左右不能空格!


你可能感兴趣的:(Mybatis)