通用类的写法

package com.icss.hr.job.dao;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import com.icss.hr.job.pojo.AbstractObj;
import com.icss.hr.job.pojo.Job;

@Repository
public class DaoImpl implements IDao {

	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	@Test
	public void test() throws Exception{   
		ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
		IDao dao =(DaoImpl)ac.getBean("daoImpl");
		Job obj = new Job("jb001","java初级程序员",4000,8000);		
		dao.add(obj);
	}
	

	@Override
	public boolean add(AbstractObj obj) throws Exception {  //这是重点,后期讲课时,让学生把反射这块死练,让他们记得滚瓜烂熟为止
		StringBuilder sb=new StringBuilder();
		
		sb.append("insert into ")
		  .append(obj.getClass().getSimpleName())
		  .append(" values (");
		
		Field[] f = obj.getClass().getDeclaredFields();//获取所有的属性
				
		String str=null;
		Object[] value=new Object[f.length];//存放方法返回值
		for(int i=0;i<f.length;i++){
			sb.append("?,");
			String s=f[i].getName().substring(0,1).toUpperCase();
			String s2=f[i].getName().substring(1,f[i].getName().length());
			str="get"+s+s2;
			Method m=obj.getClass().getMethod(str); //根据方法名获得的方法对象 
			value[i]=m.invoke(obj);//根据对象类型而执行的方法,结果是方法返回值
		} 
		String sql=sb.substring(0,sb.length()-1).toString()+")";		
		System.out.println("sql:  "+sql);
		System.out.println("value:  "+Arrays.toString(value));
		
		int rows = jdbcTemplate.update(sql,value);		
		return rows>0;
	}


	@Override
	public boolean update(AbstractObj obj) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean delete(int _id) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<AbstractObj> queryAll() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public AbstractObj queryById(int id) {
		// TODO Auto-generated method stub
		return null;
	}



}

  

原文地址:https://www.cnblogs.com/1020182600HENG/p/6895767.html