Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。
2.ORM是什么ORM(Object Relational Mapping),对象关系映射,是一种为了解决关系型数据库数据与简单Java对象(POJO)的映射关系的技术。
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中。
持久层
概念:负责将数据保存到数据库,Hibernate
Mybatis 是一个半 ORM(对象关系映射)框架,Hibernate属于全自动ORM映射工具
Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是 mybatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件, 则需要自定义多套 sql 映射文件,工作量大。
Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用 hibernate 开发可以节省很多代码,提高效率。
(1) 使用数据库连接池对连接进行管理(protecties文件)
(2) SQL语句统一存放到配置文件(mapper文件)
(3) SQL语句变量和传入参数的映射以及动态SQL(${username}、、、)
(4) 动态SQL语句的处理(if、、、test、、、)
(5) 对数据库操作结果的映射和结果缓存
(6) SQL语句的重复(mapper文件)
#{}是占位符,预编译处理;KaTeX parse error: Expected 'EOF', got '#' at position 22: …,字符串替换,没有预编译处理 #̲{} 可以有效的防止SQL注入…{} 不能防止SQL注入
变量替换后,#{} 对应的变量自动加上单引号 ‘’;变量替换后,${} 对应的变量不会加上单引号 ‘’
Mybatis使用JDK的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler的invoke()方法。
8.mybatis配置文件中别名的作用当数据库的字段与类中的属性名不一致时,通过别名改成一致
9.如何实现主键回填1.需要在insert标签上加上 useGeneratedKeys=“true” keyProperty=“主键”
2.
10.Mybatis动态sql有什么用?执行原理?有哪些动态sql?select LAST_INSERT_ID()
Mybatis动态sql可以在Xml映射文件内,以标签的形式编写动态sql,执行原理是根据表达式的值 完成逻辑判断 并动态拼接sql的功能。
Mybatis提供了9种动态sql标签:trim | where | set | foreach | if | choose | when | otherwise | bind。



