ORM_mybatis 讲解

batis 是一个ORM框架,MyBatis作为持久层框架,其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现sql的灵活配置。这样做的好处是将sql与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改sql。下面给个简单的入门例子。

工作流程:

(1)加载配置并初始化
触发条件:加载配置文件
将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2)接收调用请求
触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。
(3)处理操作请求 触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(C)获取数据库连接,根据得到的最终 SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。
我们把Mybatis的功能架构分为三层:
(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

4,在DAO层添加基于每个dao文件的**DAO.config配置文件,在这个文件里标注类型别名和书写要操作的sql语句:

ORM_mybatis - hui1107464497 - hui1107464497的博客

其中:parameterClass用来指定入参,resultClass指定出参

5,此时可以再DAO层直接使用了:

using IBatisNet.DataMapper;

SqlMap.QueryForList<TaskEntity>("SSL.Entity.SelectTask", 12);

返回id=12的实体。

4,在DAO层添加基于每个dao文件的**DAO.config配置文件,在这个文件里标注类型别名和书写要操作的sql语句:

ORM_mybatis - hui1107464497 - hui1107464497的博客

其中:parameterClass用来指定入参,resultClass指定出参

5,此时可以再DAO层直接使用了:

using IBatisNet.DataMapper;

SqlMap.QueryForList<TaskEntity>("SSL.Entity.SelectTask", 12);

返回id=12的实体。

1,引入类库:IBatisNet.DataMapper.dll、IBatisNet.Common.dll 

2,添加配置文件:Providers.config(连接数据库配置,包含对各种数据库的字符串配置)

                              Properties.config(配置登陆的数据库,用户、密码)

                              SqlMap.config(Ibatis核心配置文件,包含上边两个文件的指定,同时还定义了其它的DataMapper配置选项,如缓存等,在其<sqlMaps>中添加对每个数据源配置文件的配置)

 

3,在web.config中将上一步的sqlmap.config文件配置为对象添加到spring的上下文容器中,以作为属性向DAO文件注入。

ORM_mybatis - hui1107464497 - hui1107464497的博客

4,在DAO层添加基于每个dao文件的**DAO.config配置文件,在这个文件里标注类型别名和书写要操作的sql语句:

ORM_mybatis - hui1107464497 - hui1107464497的博客

其中:parameterClass用来指定入参,resultClass指定出参

5,此时可以再DAO层直接使用了:

using IBatisNet.DataMapper;

SqlMap.QueryForList<TaskEntity>("SSL.Entity.SelectTask", 12);

返回id=12的实体。

实例

转载于:https://www.cnblogs.com/hui1107464497/p/4502179.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值