最近在网上看到一些文章,说mybatis映射javabean一定要有无参构造方法,我也是半信半疑,然后去找了一下源码,发现并非如此。
1、首先会去找javabean中是否用无参构造,如果有就直接用无参构造
2、多个有参构造判断流程看代码注释:
private Constructor<?> findDefaultConstructor(final Constructor<?>[] constructors) {
//只有一个有参构造则直接返回
if (constructors.length == 1) {
return constructors[0];
}
//如果有多个有参构造,则遍历构造方法,看是否有构造方法上面加了`@AutomapConstructor`注解的,有则直接返回
for (final Constructor<?> constructor : constructors) {
if (constructor.isAnnotationPresent(AutomapConstructor.class)) {
return constructor;
}
}
return null;
}
3、最后一步才是判断是否有全参构造方法,有就直接用,否则就报错。