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 等号左右不能空格!