DBLink与泛型

本文介绍了Java泛型的基础知识及其在DBLink中的应用案例。通过具体代码示例展示了如何利用泛型方法实现数据库查询操作,并返回特定类型的对象集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们学习Java都听说过泛型,泛型可以很大程度上的简化代码。那么,首先让我们了解何谓泛型?Java 泛型是 JDK 5 中引入的一个新特性,–JDK5以后, Java引入了“参数化类型(parameterized type)”的概念, 该概念也称之为泛型(Generic)。所谓泛型就是允许在定义类、接口或方法时使用类型形参,该类型形参将在声明变量、创建对象或者调用方法时动态指定(即传入实际的类型参数,可称为类型实参),可以说泛型的出现简化了代码,提高了程序的健壮性。 泛型有泛型接口、泛型类、泛型方法。今天则讲一讲泛型在DBLink 中的应用。

首先看一看如下代码

public <E> E select(String sql,IRowMapper<E> rowMapper) {
		Connection con = null;
		Statement sta = null;
		ResultSet rs = null;
		try {
			con = getconnection();
			sta = con.createStatement();
			rs = sta.executeQuery(sql);
			return rowMapper.rowMapper(rs);
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			close(con,sta,rs);
		}
		return null;
	}

这是DBLink中定义的一个查询泛型方法(泛型一般用E表示)、定义泛型方法的好处是我们可以任意觉得方法的返回值类型,如可以我们可以返回一个数组甚至是一个类。其中的IRowMapper是一个泛型接口。代码如下

public interface IRowMapper <E>{

	 E rowMapper(ResultSet rs);
}

那么如何调用这个泛型方法呢?我们以返回一个类为例

package test;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.xt.util.MD5util;
import com.xt.util.db.DBlink;
import com.xt.util.db.IRowMapper;

import vo.UserInfo;

public class Test1 {

	public static void main(String[] args) {
		String sql="select *from user_info where id=?";
		List<UserInfo> userinfos= new DBlink().select(sql,new IRowMapper<List<UserInfo>>() {

			List<UserInfo> userinfos=new ArrayList<>();
			@Override
			public List<UserInfo> rowMapper(ResultSet rs) {
				try {
					while(rs.next()) {
						UserInfo userInfo=new UserInfo();
						userInfo.setId(rs.getString("id"));
						userinfos.add(userInfo);
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return userinfos;
			}

			
		});
		for (UserInfo userInfo : userinfos) {
			System.out.println(userInfo.getId());
		}
	}
} 

那么让我们分析一下代码是如何执行的,首先UserInfo是自己创建的一个类,其中有String类型的id属性。创建了List 集合 调用DBLink的select方法,传入了sql语句和IRowMapper 对象,然后进入DBLink中的select方法,在select连接数据库中的user_info表,继续往下运行直到return rowMapper.rowMapper(rs); 然后返回到Test类中 public List<UserInfo> rowMapper(ResultSet rs)重写了IRowMapper 接口中的 rowMapper(ResultSet rs)抽象方法 然后while循环遍历user_info表中的数据 rs.getString("id")获取到表中的id并保存到创建好的userinfo对象中,然后用userinfos.add(userInfo)添加到userinfos集合中。while循环执行完后userinfos集合也就添加完成了。最后用加强for循环遍历集合就可以输出我们想要获取的值。至此方法执行完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值