一、基本概念和使用步骤
1、MyBatis框架是什么?
是一个数据持久层框架,是对JDBC的操作数据库的封装。
2、设计理念:
基于原生的SQL进行设计。
3、MyBatis的优缺点以及应用场景?
优点:
和JDBC相比,减少了代码量。
MyBatis是最简单的数据持久化框架,便于学习。
SQL语句写在XML文件里,从程序代码中彻底分离,降低了耦合度。
提供了XML标签,可以动态的编写SQL语句。
提供映射标签,支持对象与数据库的字段进行关系映射。
缺点:
SQL语句编写量大,对开发人员的编写SQL语句功底有要求。
SQL语句依赖于数据库,所以数据库的移植性差。
使用场景:
MyBatis专注于SQL本身,是一个灵活的数据层解决方案。
适用于互联网项目。
4、MyBatis的使用步骤?
1)引入MyBatis的jar包,和对应的数据库jar包,以及SQL文件。
2)编写实体类:要求实体类的属性和数据表字段一一对应。
3)编写操作数据接口:添加基础的数据操作方法。
4)编写实现数据操作的配置文件:要求和对应的接口同名。
5、resultMap的使用?
resultMap是结果集映射标签,可以将查询到的复杂类型的数据映射到一个结果集中。
属性:
id:表示结果集的唯一标识
type:映射结果类型,默认是要配置全类名。
子节点:
id:表示数据表的主键对应的实体类的属性
result:配置其他字段对应的属性。
子节点属性:
property:实体类的属性名。
column:数据库表的字段名。
二、动态SQL
1、什么是动态SQL?
使用MyBatis里面的标签,对传入的参数进行判断,根据结果,对sql语句进行拼接。
2、常用标签
if标签:在标签的test属性中添加判断条件。动态sql的核心标签
where标签:用于替代sql语句中的where命令。
set标签:替代sql语句中的set更新命令。
forEach标签:遍历集合用的。
choose标签:相当于java中的switch结构,用于选择。
when标签:
otherwise标签:
3、#{}和${}的区别?
#{} | ${} |
#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号 | $将传入的数据直接显示生成在sql中 |
可以防止SQL注入 | 不能防止SQL注入 |
预编译sql语句使用?占位符代替 | 使用字符串替换 |
一般优先使用#{} | 一般用于传入数据库对象,如表名,字段名. |