使用元组封装变量(java泛型的利用) 达到代码复用的目的
2017-03-28 22:36
337 查看
背景:今天在学习JDBC时,为了降低对象之间耦合,需要重复写某些代码:
因为在Biz层根据实际业务不同需要对资源进行关闭操作,所以采用了未强封装方法Connection connection= BaseDao.getConnection();PreparedStatement preparedStatement=connection.prepareStatement(sql这两个对象需要重复使用,怎么办呢?
元组(tuple),元组也称为数据传送对象或信使。元组是将一组对象直接打包存储于其中的一个单一对象,这个容器对象允许读取其中元素,但是不允许向其中存放新的对象。
通常,元组可以具有任意长度,同时元组中的对象可以是任意不同的类型。我们能够为每一个对象指明其类型,并且可以正确读取到数据,这就是元组可以提供的功能。我们要处理不同长度的问题,需要创建多个不同的元组。
元组另一个应用http://www.cnblogs.com/davidwang456/p/4514659.html
使用他来保存数据.
和数据bean相比是没有set方法,只有get方法
希望对大家有所启发
package wyh.service.impl; import wyh.jdbc.dao.BaseDao; import wyh.jdbc.dao.Dao; import wyh.service.IDoLogin; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * Created by wyh on 19/03/2017. */ public class DoLoginImpl implements IDoLogin { private Dao dao; public DoLoginImpl(){ dao=new Dao(); } @Override public boolean verify(String username, String password) throws SQLException { String sql="SELECT 1 FROM s_user WHERE username=? AND userPwd =?"; Connection connection= BaseDao.getConnection(); PreparedStatement preparedStatement=connection.prepareStatement(sql); ResultSet resultSet=dao.query(preparedStatement,sql,username,password); boolean flag=resultSet.next();//if true means result has element BaseDao.closeResource(resultSet,preparedStatement,connection); return flag; }
因为在Biz层根据实际业务不同需要对资源进行关闭操作,所以采用了未强封装方法Connection connection= BaseDao.getConnection();PreparedStatement preparedStatement=connection.prepareStatement(sql这两个对象需要重复使用,怎么办呢?
在一个类中定义一个方法返回Object数组么 Object[] combo=new Object[]{getConnection(),getPreparedStatement()} 然后通过下标connection=combo[0],preparedStatement[1]这样的方法么?是可以,但是可读性不强 或者利用泛型,可是不同类型只能用Object呀,也不太好 List<Object> list=new ArrayList<>(); 于是在网上找,最后定下来元组. ----------------------------------------------------------------------------- 解决:
元组(tuple),元组也称为数据传送对象或信使。元组是将一组对象直接打包存储于其中的一个单一对象,这个容器对象允许读取其中元素,但是不允许向其中存放新的对象。
通常,元组可以具有任意长度,同时元组中的对象可以是任意不同的类型。我们能够为每一个对象指明其类型,并且可以正确读取到数据,这就是元组可以提供的功能。我们要处理不同长度的问题,需要创建多个不同的元组。
package wyh.jdbc.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; /** * Created by wyh on 28/03/2017. */ public class Tuple<C extends Connection,P extends PreparedStatement> { public C connection; public P preparedStatement; @SuppressWarnings("unchecked") public Tuple(String sql){ try { connection=(C)BaseDao.getConnection(); preparedStatement=(P)connection.prepareStatement(sql); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args){ Tuple<?,?> combo=new Tuple<Connection, PreparedStatement>("test"); System.out.println(combo.connection); System.out.println(combo.preparedStatement); } }
元组另一个应用http://www.cnblogs.com/davidwang456/p/4514659.html
使用他来保存数据.
和数据bean相比是没有set方法,只有get方法
希望对大家有所启发
相关文章推荐
- 黑马程序员---使用委托封装filestream以达到代码重用的目的
- 使用eclipse3.8搭建maven web开发环境,达到在eclipse编辑器中修改保存任何代码,都能直接启动tomcat预览效果的目的
- C语言(如何不使用第三个变量达到交换两个变量值的目的)
- 如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算
- 如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算
- JAVA泛型的使用技巧与代码的封装
- 如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算
- 如何使用泛型达到代码重用的目的
- AngularJS之使用服务封装可复用代码
- 使用 eAccelerator加速PHP代码的目的
- 利用OpenSSL中EVP封装调用对称加密算法的通用代码
- 利用XML缓存数据达到缓解数据库服务器压力的代码利用片段
- “无形参函数”利用汇编代码传递变量地址 [有点意思]
- 如何使用ASP.NET不用脚本(JavaScript)达到新开IE(浏览器)窗口的目的?
- 使用缓存封装高复用数据
- Javascript浮动广告图片代码,已封装!兼容性强!使用简单!
- [导入]使用snipp dogg进行代码复用
- 如何统计网站访问量,代码实现使用全局变量 Application,start,end,Session_start,Session_end事件
- 如何利用一个变量来达到多重循环的效果?
- DLL封装登录框架实现代码复用