Mybatis
数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。例如,文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作
MyBatis支持定制化SQL、存储过程以及高级映射,可以在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。其封装低于Hibernate,但性能优秀、小巧、简单易学、应用广泛。
ORM(Object Relational Mapping)对象关系映射
是一种数据持久化技术,它在对象模型和关系型数据库之间建立起对应关系、并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据
MyBatis前身为iBatis,2002年由ClintonBegin发布。2010年从Apache迁移到Google,并改名为MyBatis,2013年又迁徙到了Github。
MyBatis的主要思想是将程序中的大量SQL语句剥离出来,使用XML文件或注解的方式实现SQL的灵活配置,将SQL语句与程序代码分离,在不修改程序代码的情况下,直接在配置文件中修改SQL语句。
MyBatis与其他持久性框架最大的不同是,MyBatis强调使用SQL,而其他框架(例如Hibernate)通常使用自定义查询语言,即HQL(Hibernate查询语言)或EJB QL(Enterprise JavaBeans查询语言)
搭建Mybatis
添加依赖
配置数据源
配置Mapper文件路径和别名以及日志级别
定义Mapper,namespace中填写对应Dao包的路径
创建对应封装类
定义数据访问层接口,使用Mapper接口
Controller层
增删改查
SQL语句执行分为两个过程
1.编译
2.执行指令
${}和#{}的区别:
#{}会进行预编译,将SQL语句的语义确定,之后无论传递任何参数都不会改变SQL语句语义,可以有效防止SQL注入,也可加快批处理的效率
---------------------------------------------------------------------------------------------------------------------------------
增<insert id="">
insert into 表名(列名…) value(值…)
dao接口
Controller层
---------------------------------------------------------------------------------------------------------------------------------
删<delete id="">
delete from 表明 where 条件
dao接口
Controller层
---------------------------------------------------------------------------------------------------------------------------------
改<update id="">
update 表名 set 列名=属性… where 条件
dao接口
Controller层
---------------------------------------------------------------------------------------------------------------------------------
查<select id="" resultType="">
select 列名… from 表名 where 条件
dao接口
Controller层