Mybatis小结

什么是Mybatis

Mybatis是一款持久层框架,是一个半自动ORM(对象关系映射)框架,支持定制化SQL,存储过程以及高级映射。

ORM是什么

ORM(object relational mapping),对象关系映射。ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中。

半自动化和全自动化

Hibernate是全自动化ORM框架,查询时可以根据对象关系模型直接获取。

Mybatis   是半自动化ORM框架,查询时必须手动编写sql语句。

为什么要使用Mybatis而不是传统的JDBC

1.数据库的连接,释放频繁会造成系统资源的浪费从而影响系统性能,mybatis可以配置数据连接池管理数据库连接。

2.sql语句写在代码中会造成代码不易于维护,mybatis可以将sql语句配置在xml文件中,从而实现与java代码的分离。

3.传参麻烦,where条件不一定,占位符需要和参数一一对应,mybatis可以自动将对象映射到sql语句中。

4.Mybatis可以自动对结果集经行处理,经sql执行结果映射至java对象。

缺点

1.sql语句编写工作量大。

2.sql语句依赖与数据库,不能随意更换数据库。

工作原理

1.读取配置文件(mybatis-config.xml)。

2.加载映射文件(Mapping),该文件中配置了操作数据库的sql语句。mybatis-config.xml可以加载多个配置文件,每个配置文件对应数据库中的一张表。

3.构造会话工厂SqlSessionFactory。

4.创建会话对象SqlSession。

5.Executor执行器:mybatis底层定义了一个Executor接口,他将根据SqlSession传递的参数动态的生成需要执行的SQL语句,同时负责对查询缓存的维护。

6.MappedStatement对象:在Executor接口的执行方法中有一个MappedStatement类型的参数,其实对映射信息的封装,用于储存要映射的SQL语句的id等参数。

7.输出结果映射。

功能架构

mybatis的功能架构分三层

API接口层:负责接收调用请求。

数据处理层:接口层接收到调用请求就会调用数据处理层来处理,负责具体的SQL查找,解析,执行和执行结果映射处理等。主要目的是根据调用请求完成一次数据库操作。

基础支撑层:负责为上层数据处理层提供最基础的功能支撑。

#{}和${}的区别

1.#{}是占位符,会进行预编译处理;${}是拼接符,字符串替换,没有预编译处理。

2.#{}出入参数是以字符串传入,会将SQL语句中的#{}替换为?,调用PreparedStatement的set方法来进行赋值。可以有效防止SQL注入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值