JDBC——自建一个关于数据库查询表的通用方法

分析

不同的表对于查询可能会有不一样:
①表中的列属性不同
②可能数据库中的属性名和javabean中的属性名不同
下面的方法主要解决了这两个问题。

代码主体:

本人偷了个懒吧异常全部抛出不管。。这个问题可以忽视哈哈哈

public class jdbtyfind {
		public static <T>T getinfo(Class<T> classz,String sql,Object ...objects) throws ClassNotFoundException, IOException, SQLException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException{
			Connection conn = jdbcUtils.getconnection();
			PreparedStatement ps=conn.prepareStatement(sql);
			//填充占位符
			for(int i=0;i<objects.length;i++) {
				ps.setObject(i+1, objects[i]);
			}
			ResultSet executeQuery = ps.executeQuery();//获取结果集
			ResultSetMetaData metaData = executeQuery.getMetaData();//获取结果集数据,用于知道有多少列
			int count = metaData.getColumnCount();//拿到列数
			//运用反射处理结果集
			if(executeQuery.next()) {
				T interfaces = classz.newInstance();//创造一个泛型对象
					for(int i=0;i<count;i++) {
					 Object objectvalue = executeQuery.getObject(i+1);//获取列的值;
					 String columnName = metaData.getColumnLabel(i+1);//获取列名
					 Field declaredField = classz.getDeclaredField(columnName);//通过反射找到javabean中对应的参数
					 declaredField.setAccessible(true);//设置可以访问私有属性
					 declaredField.set(interfaces, objectvalue);//向创建的泛型类对象中放入数据
					 } 
				 conn.close();
				 ps.close();
				 return interfaces;
			}else {
				conn.close();
				 ps.close();
				return null;
			}
		}

上述代码中的jdbcUtils.getconnection()是自己封装的JDBC的连接方法
代码如下:

public class jdbcUtils {//封装JDBC的连接
	@Test
	public static Connection getconnection() throws ClassNotFoundException, IOException, SQLException {
		//运用反射机制加载jdbc配置文件
		java.io.InputStream resource = JDBC.class.getClassLoader().getResourceAsStream("jdbc.properties");
		Properties is =new Properties();
		is.load(resource);
		String user = is.getProperty("user");
		String password = is.getProperty("password");
		String url = is.getProperty("url");
		String DriverClass = is.getProperty("DriverClass");
		Class.forName(DriverClass);//加载驱动
		Connection conn = DriverManager.getConnection(url, user, password);
		
		return conn;
	}

jdbc.properties文件参数如下:

user=sa
password=sa
url=jdbc:sqlserver://localhost:1433; DatabaseName=user
DriverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值