请选择 进入手机版 | 继续访问电脑版

HTML5星空

JAVA:自定义套件封装原来这么简单

[复制链接]
发表于 2017-7-25 00:10:03 | 显示全部楼层 |阅读模式

各位亲爱的小伙伴们大家好,最近很多伙伴都问我该怎么做自定义套件封装,我在这里做了一个教程分享给大家。

java开发人员现在对数据库的操作一般会用到诸如像Hibernate,Mybatis,SpringJdbcTemplate等ORM组件,但是这些组件是怎样从原始的编码方式一步步封装过来的呢 ?


一、最原始的编码方式


如下图所示:  我在05年刚毕业的时候,曾经是这样写Jdbc访问数据库的.



二、封装的过程和思路


总得来说,Java组件封装的原则就是高内聚,低耦合,直白一点的解释就是将重复性的代码提取出去作为工具类,尽量减少类与类之间的固定依赖。


1) DbUtil工具类


通过查看最原始编码方式的代码 ,我们可以看出,获取数据库的连接和关闭数据库连接的代码,在每一次操作中都需要,所以我们可以思考一下,将这部分代码提取出去.

* 新建DbUtil工具类 ,用于数据库的开连接和关连接



通过工具类的封装,我们可以继续在工具类里面将数据库的信息通过配置文件加载,以及启用流行的连接池技术,在这里不在赘述.


2) 增删改方法的封装


在封装了DbUtil工具类的基础上,我们试着做一个单表的增删改查,请看以下代码:



进一步观察增删改方法 ,除了Sql语句和参数传入的不同,其他代码其实也是重复的,我们是否可以考虑将这些公用的代码也提取出去呢?

伟大的Java程序员们都是”懒鬼”,一切都是为了少些一些重复的代码以提高工作效率.

我们可以新建一个模板类JdbcTemplate, 对增删改方法进行封装,外部只需要传入sql语句和sql语句需要用到的参数.


通过上面步骤的封装,我们再来看看让对单表增删改的操作是如何方便简单的,新建一个单表增删改的测试类,继承我们封装的模板类,代码如下:

回过头看看我们的封装过程和代码,是不是对于开发人员来讲 ,越来越简单,代码写的越来越少,这就是Java在实际开发过程中需要用到大量前辈们封装的组件的原因.

 

3) 查询方法的封装


在增删改方法的封装过程当中,我们发现,增删改的操作,方法的返回值是固定的,但是查询方法的返回值是不固定的,查询不同的表,返回的是不同对象,也有可能是返回的其他类型的值.

通过以上分析,我们封装查询方法的时候,只能返回一个固定格式的对象或者列表,让执行查询的人来解析固定格式的结果得到自己想要的返回值.

两种方式:

a:返回一个List<Map<Object,Object>结构

在JdbcTemplate模板类面新加查询模板方法



这种封装方式在执行查询时候,获取的结果是List<Map<Object,Object>>结构的值,需要自己再进行转化,但是对于查询来说,就非常的简单了。

在UserDaoTemplateTest类里面新加查询方法


b:返回一个接口的匿名内部类

这种方式,封装起来稍微复杂一些,但是对于查询方来说,就可以直接在查询方法里面获取自己想要的对象,返回List<Bean>,

非常简单。

  步骤:

* 新建一个接口 RowMapper<T>,成员是一个匿名的内部类


*  在JdbcTemplate模板类里面新增模板查询方法


* 查询的时候,通过实现匿名的内部类来获取结果,直接映射到Java对象当中 ,如代码所示,在UserDaoTemplateTest中进行查询


最终的代码目录结构如下,希望对大家的学习有所帮助。



如果需要达到像Mybatis和Hibernate等组件的高度,还有很长的一段的路要走,有兴趣的同学可以查看一下SpringJdbcTemplate的源码,其中的思想是跟它不谋而合的。

 


三、总结



通过以上的封装过程,我们可以了解到Java封装组件的一个基本思路,有助于大家以后在用到相关的ORM组件时,对它们有一个更深得到认识。当然,本篇文章封装的代码只是冰山一角,还有更多精彩有料有趣内容,想要学好java的伙伴们还有更多福利哦,希望各位伙伴们不要错过这次和以后的精彩内容。


四、福利


 简介 |JAVA免费直播分享课


调性:我们只想做一场有深度的技术交流分享


提示:此课程以干货分享为主,每节课时长约2.5小时,因QQ群人数限制,请确认自己的需求后再进群(是否带着JAVA方面的问题来探讨),把机会留给更需要的同学!^_^


报名方式: 扫一扫二维码或加群号(658366541


↓↓JAVA免费直播课课程内容↓↓

上课内容:大型分布式系统必备利器之Redis内存数据库

上课时间:每晚晚上8点半开始


请记住上课时间哦


↓↓JAVA免费直播课授课老师↓↓

keven老师


12年java项目设计以及教学经验,曾任职于知名上市公司和世界500强企业,开放期间主要设计并参与了移动梦网、某省电信OA系统、EMS能源管理系统、省级电力采集信息平台、防窃电分析系统、某共享经济应用平台等大型项目、一直致力于大型分布式应用系统的分析和应用。




墨风老师


 javaVIP JAVASE/数据库/js主讲老师,五年java项目和ANDRIOD项目开发和培训经验,熟悉C++、C#等多种开发语言,熟悉java各种开源框架在企业应用级项目和移动项目中的应用,开发期间设计并参与了小觅蜂等项目


学习本无底,前进莫徨




点击“阅读原文”也可以加入学习交流群

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

更多资源及Java+大数据个人原创视频,
可关注本站官方公众号观看:
快讯

     京ICP备14042305号

html5star team © 2012-2013 html5星空 Comsenz Inc.

GMT+8, 2020-7-11 10:25 , Processed in 0.295945 second(s), 38 queries .

快速回复 返回顶部 返回列表