JAVA反射技术实现简单的JDBCUtil(ORM)

本文介绍了一种使用反射简化JDBC操作的方法,通过自定义工具类实现了数据库查询结果自动映射到JavaBean对象,减少了代码量并提高了开发效率。

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

以前刚学jdbc每次需要从数据库select数据然后赋值给一个javabean都要写大一段代码,今天用反射实现了一个简单的映射:

package jdbc;

import java.sql.Connection;
import java.util.List;

public class JDBCUtil {
	public static List QueryOrUpdate(Class returnType,String sql,Object... objs){
		List list = null;
		try {
			Util util = new Util();
			Connection connection = null;
			connection =util.getConnection();
			Param param = null;
			Class[] cla = null;
			Object[] obj = null;
			if(objs!=null){
				param = new Param(objs);
				cla = param.getCla();
				obj = param.getObjs();
			}
			StatementUtil statementUtil = new StatementUtil(returnType, connection, sql, 
					cla,obj);
			Pre pre =  statementUtil.getPrepareStatement();
			ResultSetUtil resultSetUtil =  new ResultSetUtil(pre);
			list = resultSetUtil.getPOJO();
			util.release(connection);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}
}

package jdbc;

public class Param {	
	private Object[] objs;
	private Class[] cla;
	public Param(Object[] objs){
		this.objs = objs;
		cla = new Class[objs.length];
		for(int i =0;i getPOJO(){
		List list = null;
		if(!isSelect){
			try {
				preparedStatement.executeUpdate();
			} catch (Exception e) {
				e.printStackTrace();
			}finally{
				try {
					preparedStatement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			return null;
		}else{
			//select
			list =  new ArrayList();
			Object obj  =null;
			ResultSet resultSet = null;
			try {
				resultSet = preparedStatement.executeQuery();
				Field[] fields = pojo.getDeclaredFields();
				while(resultSet.next()){
					obj = pojo.newInstance();
					Object[] arg = new Object[fields.length];
					for(int i=0;i



主要api ,  JDBCUtil.QueryOrUpdate(Class returnType,String sql,Object... objs) 会自动映射,但是有一些缺陷,比如得到的列名必须和要映射的javabean的属性名相同


StatementUtil这个类可以定制从java属性到数据库的转换,我只在里面添加了int integer double 和string类型的转换,如果有需要可以自己添加


小弟不才,写的不怎么样,有需要完整jar的朋友留个邮箱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值