mybatis
1
优点:
mybatis时基于Sql语言编程相对灵活,Sql语句写在xml里,解除了sql与程序代码的耦合性,便于统一管理,mybatis还支持动态sql语句,
并且sql语句还可以重用。
消除了JDBC编程的冗余代码,
支持对象与数据库字段的关系映射,提供对象关系映射标签。
2
mybatis与hibernate的不同:
mybaties不完全是一个ORM框架,因为mybatis需要程序员自己编写sql语句。
#{}和¥{}的区别是什么
#{}是预编译处理,${}是字符串替换。
mybatis在处理#{}时,会将sql中的#{}替换为?占位符,调用pareparedStatement的set方法来赋值
mybatis在处理${}时,就是把 ${ } 替换成变量的值。
使用#{}可以防止sql注入。
3
当实体类中的属性名 和别名不一样怎么班?
1.可以给sql语句查询字段定义字段的别名,让字段名的别名和实体类的属性名一致
2.通过resultMap来定义映射字段名和实体类属性名的一一对应的关系。
4。
xml映射文件中都会与与dao接口对应,请问这个Dao接口的工作原理是什么,Dao接口里的方法,参数不同时,方法能重载吗?
Dao接口的全限定名,就是映射文件中的
namespace的值,接口中的方法名就是
映射文件中mapper的statement的id值,接口方法内的参数,就是传递给sql的参数
Mapper接口时没有实现类的,方调用接口方法时,接口全限定名+方法名拼接字符串作为key值,可唯一定位一个MapperStatement。
在mabatis中。每一个《select》,…都会被解析为MapperStatement对象,Mapper接口的工作原理是JDK动态代理,Mybatis运行时会使用Jdk动态代理为Mapper生成一个Proxy代理对象,代理对象会拦截接口的方法,执行MapperStatement代表的sql,然后将sql执行结果返回。
Mybatis是如何将sql执行结果封装为目标对象并返回的?
定义了列名和对象属性名 的映射关系之后,Mybatis会通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回。
Mybatis动态sql有什么用?执行原理?
有哪些动态sql?
执行原理是根据表达式的值,完成逻辑判断并动态拼接sql的功能