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的实体。

实例

posted on 2015-05-14 00:00  Angel_baby  阅读(3895)  评论(0编辑  收藏  举报