Mybatis简介
- Mybatis是一个半ORM框架,他内置了JDBC,相较于JDBC,他不需要开发人员去编写复杂的JDBC代码,类似开关资源,加载驱动,创建Statement等复杂的过程,只需要专注于SQL语句本身。
- Mybatis可以通过XML或者注解的方式去配置和映射信息,然后通过Java对象和statement中的动态参数映射为最终的SQL语句,最后由Mybatis框架执行SQL并将结果映射为对象并返回
#{}和${}的区别
- #{}是预编译,是在SQL语句中将其替换成 ? 占位符,然后调用PrepareStatement的Set方法赋值
- ${}是字符串替换,在SQL语句中将其替换成变量
- 使用#{}可以防止SQL注入
Mybatis是如何把SQL的结果返回成为一个对象的?
首先我们需要定义映射关系,有两种方法
- 通过标签来定义映射,将列名和对象的属性名进行一一对应。
- 通过列的别名来定义映射,将列的别名改为对象的属性名进行定义。
找到映射关系之后,Mybatis会通过反射创建一个对象,然后再通过反射的机制去给对象进行赋值。
Mybatis的XML文件和Dao接口是如何关联的
解析XML
- 首先Mybatis会把XML文件的每个SQL的标签都创建一个SQLSource