持久层框架设计与实现及MyBatis源码剖析(一)--从查询结果集Utils到ORM思想升级

DBUtils处理查询的结果集

参考

  1. https://blog.csdn.net/simonforfuture/article/details/90480147?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&dist_request_id=c08d0c93-dcd8-49cb-bae1-8d51f0655305&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

  2. https://blog.csdn.net/luxiaoyu_sdc/article/details/7360675?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&dist_request_id=4d39fc2f-7aa2-4cf7-9f8c-df136ca9a68d&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

  3. https://blog.csdn.net/tpyqwe/article/details/51393471?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&dist_request_id=c08d0c93-dcd8-49cb-bae1-8d51f0655305&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

处理查询的结果集,DBUtils指通过对数据源连接的封装,然后使用QueryRunner进行CRUD操作,在使用查询时,需要通过ResultSetHandler接口的具体实现完成数据的映射。

  1. QueryRunner中提供对sql语句操作的API.

第一种

		//创建QueryRunner对象
		QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

第二种

        //直接建立connect 然后实例化QueryRunner进行使用
        Connection conn = ConnectDb.Connect();  
          
        //创建SQL执行工具   
        QueryRunner qRunner = new QueryRunner(); 
  1. ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
List<Category> c = qRunner.query(sql, new BeanListHandler<Category>(Category.class));

共有九种数据类型的转换对应
将查询结果映射转换
3. DbUtils类是一个工具类,定义了关闭资源与事务处理的方法.


总结:DBUtils处理查询的结果集,提供了一种轻型化的数据库查询方法,代码上需要一定的封装,尤其在实例化QueryRunner,和查询结果处理上,会有一定的复杂,在使用上没有Mybatis那么简便。

ORM思想

对象关系映射(Object Relational Mapping,简称 ORM)
O:对象,实体,在关系型数据库的表,对应一个实体,表的字段由实体的属性表示,一一映射。
R:关系型数据库的表
M:映射

通过ORM思想,我们可以通过工具类,将现有的关系数据库中的表自动地生成实体类,一般性的sql语句。
使用mybatis-generator生成Mybatis代码

优点
1)提高开发效率,降低开发成本
2)使开发更加对象化
3)可移植
4)可以很方便地引入数据缓存之类的附加功能
缺点
1)自动化进行关系数据库的映射需要消耗系统性能。其实这里的性能消耗还好啦,一般来说都可以忽略之。
2)在处理多表联查、where条件复杂之类的查询时,ORM的语法会变得复杂。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值