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

以前刚学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的朋友留个邮箱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值