首页 » PHP教程 » phpmvc框架书写技巧_ORM框架书写第一步操作Apache Commons DbUtils

phpmvc框架书写技巧_ORM框架书写第一步操作Apache Commons DbUtils

访客 2024-11-24 0

扫一扫用手机浏览

文章目录 [+]

二、ORM概要

工具关系映射(Object Relational Mapping),简称ORM。
网上有很多专业的阐明,但对付初学者来说这些专业的术语大概不太好理解。
以是我们还是通过一些实际例子来解释。

在日常的开拓中我们常常用到实体或者DTO工具,这彷佛对每一个程序员来说都是再熟习不过的了。
但这些所谓的实体或者DTO工具按照领域驱动设计的说法,它们只有自己的属性,却没有属于自己的业务行为(get和set那不叫业务行为)。
因此我们把他们称之为血虚模型。
那用这些血虚模型来做什么呢?没错,便是封装数据。
我们常常会将一些不同类型的数据封装到这些工具中。

phpmvc框架书写技巧_ORM框架书写第一步操作Apache Commons DbUtils

给工具属性赋完值往后,便把这个实体通报给Dao层实行保存操作。
终极将数据持久化到数据库的某张表中。

phpmvc框架书写技巧_ORM框架书写第一步操作Apache Commons DbUtils
(图片来自网络侵删)

在这个过程我们创造一点,数据在Java中因此工具的形式存储,而终极持久化到数据库的时候因此关系型表格的形式存储,也便是说,我们把一个工具化构造的数据映射到了关系型数据库中的这个过程,便是工具关系映射。
反之,当我们从关系型数据库中查询出的数据,又转换成一个工具模型的数据构造,这也是工具关系映射。

因此,我们可以将工具关系映射理解为它是一种工具模型和关系型数据库之间相互转换的过程。
在实际开拓中,我们会碰着大量的ORM操作,然而你会创造,这种操作实在大部分都是重复劳动,频繁的给PreparedStatment设置参数,又或者是频繁的从ResultSet中读取数据保存到实体中,这些操作让我们在开拓中降落了效率。
我们能否将这些繁琐的操作封装起来,我给你一个实体,你会自动帮我保存到数据库。
我见告你一个工具的类型,你会自动将结果集中的数据封装到这个工具中返回给我。
这样就大大简化的JDBC的操作,提高了开拓效率。
接下来我们所学习的DbUtils就帮我们完成了这些事情。

三、下载与安装

安装:

教程中利用的是1.6的版本,下载的压缩包是 commons-dbutils-1.6-bin.zip。
解压后将commons-dbutils-1.6.jar导入工程即可。

四、DML操作

首先,我们在数据中创建USERS_INFO表。
(mysql数据库)

这里我们利用DBCP连接池作为数据源。
DBCP也是commons工具集中一个小工具。
大略点说,它紧张用于监听和管理JDBC的Connection工具,达到连接复用的效果(连接池的事理及好处可以在JDBC教程的章节中进行查阅)。

接下来编写一个DBCP连接池的工具类,用于获取DataSource

4.1、QueryRunner类

这个类用于发送实行SQL语句并返回相应的结果。
实在现当中对Connection以及PreparedStatment接口的API进行了封装。
QueryRunner有两种办法来管理连接,一种是在构建QueryRunner实例时通过布局方法通报一个数据源DataSource实例;另一种则是在调用相应的操作方法,如query、update、batch等这些方法时传入一个Connection工具。
这两种办法有什么差异呢?通过源码的阅读,我们不难创造,实在对付DataSource的管理,在每次实行完相应操作后,DbUtils会自动关闭数据源的连接工具。
而在调用相应的操作方法时传入的Connection工具,在利用完之后是须要我们手动去关闭这个资源的。
在以下所有的例子中,我们都将利用DataSouce的办法进行操作。

4.2、Insert操作

4.3、Update操作

4.4、Delete操作

4.5、批量操作

五、DQL操作

5.1、ResultSetHandler接口

这个接口的核心浸染是将查询结果进行封装(O/R Mapping)。
它有许多不同的实现类,每一个实现类都将ResultSet中的结果封装身分歧类型的数据工具。
如下图:

在ResultSetHandler浩瀚的处理器实现类中紧张分为两类,一类是处理单条结果集的,一类是处理多条结果集的。

单条数据处理器:BeanHandler、ArrayHandler、MapHandler、ScalarHandler

多条数据处理器:AbstractKeyedHandler(KeyedHandler、BeanMapHandler)、AbstractListHandler(ColumnListHandler、ArrayListHandler、MapListHandler)

5.2、BeanHandler

将单条查询结果封装为Bean工具

利用BeanHandler查询单条记录:

将多条查询结果封装为List凑集,凑集中的每个元素都是一个Bean工具

5.3、ArrayHandler

将单条查询结果封装为一个Object数组

5.4、ArrayListHandler

将多条查询结果封装为List凑集,凑集中的每个元素都是一个Object数组

5.5、MapHandler

将单条查询结果封装为一个Map工具, Key保存的是查询的列名,Value保存的是列的值

5.6、MapListHandler

将多条查询结果封装为一个List凑集,凑集中的每个元素都是一个Map工具

5.7、ScalarHandler

将单条查询结果中的某一列转换为指定的类型

5.8、ColumnListHandler

将多条查询结果中的某一列封装为List凑集

5.9、KeyedHandler

将多条查询结果转换为Map,并将某列保存为Key,而Value则与MapHandler的查询结果一样,封装的是一个Map凑集

5.10. BeanMapHandler

将多条查询结果转换为Map,并将某列保存为Key,而Value则与BeanHandler的查询结果一样,封装的是一个Bean工具

六、作业

6.1、作业哀求

1. 任意数据库,建立一个表student,字段有id,name(id是自增长的,name是char类型)

2. 利用DbUtils完成CRUD操作

3. insert操作要能得到返回的自增长值

4. Connection工具要能精确处理

6.2、提交内容

1. 全体项目的源代码打包发到我的qq或者直接把你的项目的git地址见告我即可

6.3、提交韶光

2017-11-2号 星期四 中午12:00前

七、资料下载与解释

7.1、参考

https://coding.net/u/david_cj/p/dbutils-demo/git 陈军老师写的详细教程

http://www.cnblogs.com/best/p/7474442.html Git的利用

https://commons.apache.org/proper/commons-dbutils/ 官网

7.2、资料下载

标签:

相关文章

语言游戏聚会的魅力,跨界交流的盛宴

在繁忙的都市生活中,一场别开生面的语言游戏聚会悄然兴起。这不仅是一场简单的娱乐活动,更是一次跨界交流的盛宴,一场思想的碰撞与火花。...

PHP教程 2024-12-29 阅读0 评论0

语言序列逻辑在现代传播中的运用与影响

语言序列逻辑,作为现代传播学中的重要理论之一,对于理解语言传播的规律、提高传播效果具有重要作用。在信息化、网络化时代,语言序列逻辑...

PHP教程 2024-12-29 阅读0 评论0