MyBatis的是指定而非创建


1.mybatis在实体类只有一个构造函数的情况下是不会报错的,不管你是查询几个列,不管你有没有写getter,setter,只要有一个构造函数(不管无参,有参,有几个),都能够正确输出toString。

2.在实体类有多个构造函数,并且没有和mapper文件中的sql语句对应的构造函数时(不管有没有getter,setter))会报错如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.entity.Test1 matching [java.lang.Integer, java.lang.String]

主要是记录一下:对这个不怎么理解,只要随便有一个构造函数就可以,但是构造函数超过或者等于2个,并且没有和mapper的sql语句对应的构造函数会出错。

3.解决方法:从1,2可知,只要有一个构造函数就可以解决问题,可能是mybatis有选择恐惧症,不知道选哪个。因此在没有符合sql语句的构造函数的情况下,我们可以使用<resultMap>中的<constructor>指定一个具体的构造函数给mybatis。注意:这里是指定,而不是让mybatis通过<constructor>创建。我就搞错了,浪费2小时在上面。

听课没听懂,还是看了https://blog.csdn.net/u012702547/article/details/54599132这篇文章看见的指定。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2026 CODEPRJ.COM