-
说说什么是MyBatis的接口绑定?
答:在MyBatis项目中定义任意的接口,并将接口里面的方法和sql语句进行绑定,这样可以直接通过接口方法来调用相应的sql语句,这就是接口绑定。 -
MyBatis的接口绑定有哪些实现方式?
答:一种是通过注解来绑定,在接口的方法上加上@Select、@Update这些注解,注解里面的参数就是要运行的sql语句。另外一种就是直接在xml文件里写sql,通过xml文件里namespace这个标签的值来确定对应的到底是哪个接口,所以namespace要是接口的全限定名。 -
什么情况下用注解绑定,什么情况下用xml绑定?
答:当SQL语句比较简单时候,用注解绑定,当SQL语句比较复杂时候,用xml绑定。但是个人建议还是用xml绑定的好,因为在业务的发展中,SQL只会越来越复杂,就没见过几个SQL由繁入简的例子,所以不如一开始就写在xml文件里,省事。 -
使用MyBatis的mapper接口调用时有哪些要求?
答:首先xml文件里的namespace要和mapper接口的全路径一样,这样才能一一对应,其次mapper接口的方法名要和xml文件中定义的每个sql的id一样,这样方法才能对应,最后就是mapper接口中方法的返回值和参数要和其在xml文件中对应sql的parameterType以及resultType的类型相同。 -
Mybatis是否支持延迟加载?
答:Mybatis仅支持一对一关联对象和一对多关联集合对象的延迟加载,在Mybatis配置文件中,可以配置【lazyLoadingEnabled=true|false】命令来决定是否启用延迟加载。 -
延迟加载实现原理是什么?
答:它的原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,会进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用a.setB(b),于是a对象中的b属性就有值了,接着继续a.getB().getName()方法的调用,这就是延迟加载的基本原理。 -
Mybatis将sql执行结果封装为目标对象的映射形式都有哪些?
答:
第一种是使用< resultMap >标签,逐一定义数据库列名和对象属性名之间的映射关系。
第二种是使用sql列的别名功能,这里列的别名就用对象的属性名了。 -
Mybatis是如何根据映射形式将数据库对象转为实体对象的?
答:通过使用两种映射形式,让数据库列名与实体类的属性名的有了一一对应的映射关系后,Mybatis会通过反射来创建对象,同时使用反射给对象的属性逐一赋值并返回,而那些找不到映射关系的属性,就没法赋值成功。 -
Mybatis如何执行批量插入?
答:循环调用插入单条数据的接口。 -
在mapper中如何传递多个参数?
答:这里只建议一种,通过使用@param注解来做参数的传递和绑定,这种方法使用起来思路更清晰。
来源:CSDN
作者:绅士jiejie
链接:https://blog.csdn.net/weixin_38106322/article/details/104769412