Java基础 - 泛型和集合

Java基础 - 泛型和集合

泛型:–JDK5以后, Java引入了“参数化类型(parameterized type)”的概念, 该概念也称之为泛型(Generic)。所谓泛型就是允许在定义类、接口或方法时使用类型形参,该类型形参将在声明变量、创建对象或者调用方法时动态指定(即传入实际的类型参数,可称为类型实参)

优点

–泛型的出现简化了代码,提高了程序的健壮性。

ex:利用泛型去简化代码:

userinfo类:

package core;

public class UserInfo {

	private String id;
	private String username;
	private String password;
	
	public String getId() {
		return this.id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public void setId(String id) {
		this.id = id;
	}
}

DBLinks类:

public class DBLinks<E>{


	static {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 获取连接
	 * 
	 * @author 艾贻彪
	 */
	private Connection getConnection() {
		Connection connection=null;
		try {
			connection = DriverManager.getConnection(PropertiesUtil.getValue("url"), PropertiesUtil.getValue("user_name"), PropertiesUtil.getValue("password"));
			return connection;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 释放资源
	 * 
	 * @author 艾贻彪
	 */
	private void close(Connection connection,Statement statement,ResultSet rs) {
		if (rs!= null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} 
		}
		if (statement!= null) {
			try {
				statement.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} 
		}
		if (connection!=null) {
			try {
				connection.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} 
		}
	}

    public <E> E select(String sql,IRowMapper<E> rowMapper,Object...values) {
		Connection connection =getConnection();
		PreparedStatement preparedStatement = null;
		ResultSet rs = null;
		try {
			preparedStatement =connection.prepareStatement(sql);
			for (int i = 1; i <= values.length; i++) {
				preparedStatement.setObject(i, values[i-1]);
			}
			rs = preparedStatement.executeQuery();
			return rowMapper.dealResult(rs);
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			close(connection, preparedStatement, rs);
		}
		return null;		
	}
}

IRowmapper接口

package com.xt.util.db;

import java.sql.ResultSet;

public interface IRowMapper<E> {

	E dealResult(ResultSet rs);
}

Test类:将数据库里的信息存入一个List集合里面

package core;

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

import com.xt.util.db.DBLinks;
import com.xt.util.db.IRowMapper;

public class Test {

	public static void main(String[] args) {
		String sql = "select * from user_info";
		List<UserInfo> lists = new DBLinks<List<UserInfo>>().select(sql,new IRowMapper<List<UserInfo>>(){

			@Override
			public List<UserInfo> dealResult(ResultSet rs) {
				List<UserInfo> list = new ArrayList<UserInfo>();
				try {
						while(rs.next()) {
							UserInfo userinfo = new UserInfo();
							userinfo.setId(rs.getString("id"));
							userinfo.setUsername(rs.getString("username"));
							userinfo.setPassword((rs.getString("password")));
							list.add(userinfo);
						}
						return list;
					} catch (SQLException e) {
						e.printStackTrace();
					}
				return null;
			}
		});
		for (UserInfo userInfo : lists) {
			System.out.println(userInfo.getId()+":"+userInfo.getUsername()+":"+userInfo.getPassword());
		}
	}
}

猜你喜欢

转载自blog.csdn.net/monster_ayb/article/details/81706244