- Mybatis官网
- 一、基本概念了解
- 什么是动态SQL
- 什么是ORM映射
- 什么是数据持久化?
- 二、常见面试题
- 什么是Mybatis框架 / 说说对于Mybatis框架的了解
- Mybaits的优缺点:
- 常用的动态SQL标签有哪些
- #{} 和 ${} 的区别
- resultMap 和 resultType 的区别
- xml映射文件中,除了常见的select|insert|updae|delete标签外,还有哪些标签?
- 当实体类中的属性名和表中的字段名不一致,怎么办
- 如何获取自动生成的(主)键值?
- Mybatis的一级、二级缓存:
- 一对一、一对多的关联查询 ?
Mybatis官网
Mybatis官网
一、基本概念了解 什么是动态SQL
动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句
什么是ORM映射ORM(Object/Relational Mapping)即对象关系映射,是一种数据持久化技术。它在对象模型和关系型数据库直接建立起对应关系,并且提供一种机制,通过JavaBean对象去操作数据库表的数据。 MyBatis通过简单的XML或者注解的方式进行配置和原始映射,将实体类和SQL语句之间建立映射关系,是一种半自动(之所以说是半自动,因为我们要自己写SQL)的ORM实现。
什么是数据持久化?数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如,文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象的模型、XML、二进制流等。 当我们编写应用程序操作数据库,对表数据进行增删改查的操作的时候就是数据持久化的操作。
二、常见面试题 什么是Mybatis框架 / 说说对于Mybatis框架的了解
官方是这么给我们解释的:
- Mybatis是一个半自动的ORM(对象关系型映射)框架,它内部封装了JDBC,开发者开发时只需要关注如何编写SQL语句,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程,可以严格控制 sql 执行性能,灵活度高。
- MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了
几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
- 优点
- 与原生的JDBC相比,较少了大量的冗余代码,不需要手动的创建并销毁连接
- SQL语句相当灵活,不会对现有的应用程序和数据库表的现有设计造成影响,SQL写在xml映射文件中,实现了与程序代码间的解耦,便于统一管理;支持动态SQL,并且可以重用
- 对于很多数据库都兼容
- 与Spring框架能很好的集成
- 提供了映射标签,支持对象与数据库字段的映射(ORM)
- 缺点
- SQL语句编写工作量大,尤其对于多字段、多表的情况下,对于开发人员SQL语句功底有要求
- SQL语句语法依赖于数据库,导致数据库移植性差,不能随意更换数据库
, ,
${} 采用的是值的拼接,就是字符串替换
#{} 采用的是预编译的方式,将参数设置到 sql 语句中,就是将 sql 中的#{}替换成?号,然后调用 PreparedStatement 的 set 方法来赋值.
使用#{}可以有效的防止 SQL 注入,提高系统安全性
关于 resultType 和 resultMap 官方给我们的是如下解释:
无论是 resultType 还是 resultMap 都是
- 如果返回值为基本数据类型,使用 resultType(如:int)
- 如果返回值为引用类型
- 返回的为简单的引用类型,使用 resultType(如:String,或者某一个具体的实体类型【一般为对单表的查询】),当然需要注意的一点是,返回值为引用类型,这里需要写全限定名。
- 返回的为复杂的引用类型,使用 resultMap,属性值为外部 resultMap节点的命名的引用(即id的值),一般用于多表关联查询的结果集
顶级元素:
封装/描述复杂的结果集映射对象 可被其它语句引用的可重用语句块。 该命名空间的缓存配置,用于开启二级缓存。 引用其它命名空间的缓存配置。 参数映射,已过时,基本不会被使用,以后可能被移除
- 第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。
- 第2种: 通过来映射字段名和实体类属性名的一一对应的关系。
首先,如果你的数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),那么你可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置为目标属性就 OK 了。
Mybatis的一级、二级缓存: 一对一、一对多的关联查询 ?- [x] 持续更新中…



