不依赖任何jar,原生实现mysql通用增删改查操做. 开门见山,上代码(注:如下代码中全部的Object参数均为对应数据表的javaBean实体类) `//首先创建链接(重点在后面,这里简单写一下) public Connection getConn() throws Exception { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/test" ; String username = "root"; String password = "root"; Connection conn = DriverManager.getConnection(url, username, password); return conn; } /** * 查询操做,这个重点在对获取的到的结果集进行解析,转换成List * */ public List select(Object obj,Connection conn) throws Exception{ List list = new ArrayList(); Class cla = obj.getClass(); //获得类名 做为表名查询 String claname = cla.getSimpleName(); //获得属性数组 Field[] fieldArr = cla.getDeclaredFields(); String sql = "SELECT * FROM "+claname+""; Statement st = conn.prepareStatement(sql); ResultSet rs = st.executeQuery(sql); while(rs.next()){ //调用无参构造方法。实例化对象obj Object realObj= cla.newInstance(); for(int i = 0;i<fieldArr.length;i++){ //拿到每一个属性,每一个属性做为一个Field类的对象 Field field = fieldArr[i]; field.setAccessible(true); Class fieldClass = field.getType(); //设置属性值 setValue(fieldClass, field, realObj, rs); } list.add(realObj); } return list; } /** * 查询赋值,经过此方法解析ResultSet将字段值赋值到对象的属性中 * */ public void setValue(Class fieldClass,Field field,Object obj,ResultSet rs) throws Exception { //以下为经常使用数据类型,若是不够用,手动添加便可 if(fieldClass.toString().equals("int")){ field.set(obj, rs.getInt(field.getName())); }else if(fieldClass.toString().equals("long")) { field.set(obj, rs.getLong(field.getName())); }else if(fieldClass.toString().equals("float")) { field.set(obj, rs.getFloat(field.getName())); }else if(fieldClass.toString().equals("double")) { field.set(obj, rs.getDouble(field.getName())); }else if(fieldClass.toString().equals("boolean")) { field.set(obj, rs.getBoolean(field.getName())); }else if(fieldClass.toString().equals("class java.lang.String")){ field.set(obj,rs.getString(field.getName())); }else if(fieldClass.toString().equals("class java.util.Date")){ field.set(obj,rs.getDate(field.getName())); } } /** * 插入操做,重点在于sql语句拼接 * */ public int add (Object obj,Connection conn) throws Exception{ Class cla = obj.getClass(); //获得类名 String claname = cla.getSimpleName(); //获得属性数组 Field[] fieldArr = cla.getDeclaredFields(); String attributeName = ""; String value = ""; for(int i =0;i<fieldArr.length;i++){ Field field = fieldArr[i]; field.setAccessible(true); Class fieldClass = field.getType(); attributeName = attributeName+field.getName()+","; value = getValueSql(fieldClass, field, value, obj); } //去掉末位逗号 attributeName = attributeName.substring(0,attributeName.length()-1); value = value.substring(0, value.length()-1); String sql = "INSERT INTO "+claname+"("+attributeName+" ) VALUES ("+value+")"; Statement st = conn.prepareStatement(sql); return st.executeUpdate(sql); } /** * 插入操做,获取对象属性值,转换拼接成sql语句 * */ public String getValueSql(Class fieldClass,Field field,String value,Object obj) throws Exception { //以下为经常使用数据类型,若是不够用,手动添加便可 if(fieldClass.toString().equals("class java.lang.String")){ value = value+"'"+(String)field.get(obj)+"',"; }else if(fieldClass.toString().equals("int")){ value = value +(Integer)field.get(obj)+","; }else if(fieldClass.toString().equals("long")){ value = value +(Long)field.get(obj)+","; }else if(fieldClass.toString().equals("float")){ value = value +(Float)field.get(obj)+","; }else if(fieldClass.toString().equals("double")){ value = value +(Double)field.get(obj)+","; }else if(fieldClass.toString().equals("boolean")){ value = value +(Boolean)field.get(obj)+","; }else if(fieldClass.toString().equals("class java.util.Date")){ value = value +"'"+formatTimeString(((Date)field.get(obj)).getTime() / 1000)+"',"; } return value; } /** * 时间类型转换 * */ public static String formatTimeString(long time) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); date.setTime(time * 1000); Calendar cal = Calendar.getInstance(); cal.setTime(date); int iDstOffset = cal.get(Calendar.DST_OFFSET); if (iDstOffset > 0) { date.setTime(time * 1000 - iDstOffset); } return fmt.format(date); } /** * 更新操做,重点在sql语句的拼接 * */ public int update(Object obj,String where,Connection conn) throws Exception{ Class cla = obj.getClass(); Field[] fieldArr = cla.getDeclaredFields(); String valueSql = ""; for(int i =0;i<fieldArr.length;i++){ Field field = fieldArr[i]; field.setAccessible(true); Class fieldClass = field.getType(); valueSql = getValueSql(valueSql, field, fieldClass, obj); } valueSql = valueSql.substring(0, valueSql.length() - 1); String sql = "UPDATE "+cla.getSimpleName() +" SET "+valueSql+where; Statement st = conn.prepareStatement(sql); return st.executeUpdate(sql); } /** * 更新操做,获取对象属性值,拼接sql * */ public String getValueSql(String valueSql,Field field,Class fieldClass,Object obj) throws Exception { valueSql = valueSql+field.getName()+"="; if(fieldClass.toString().equals("class java.lang.String")){ valueSql = valueSql+"'"+(String)field.get(obj)+"',"; }else if(fieldClass.toString().equals("int")){ valueSql= valueSql +(Integer)field.get(obj)+","; }else if(fieldClass.toString().equals("long")){ valueSql= valueSql +(Long)field.get(obj)+","; }else if(fieldClass.toString().equals("float")){ valueSql= valueSql +(Float)field.get(obj)+","; }else if(fieldClass.toString().equals("double")){ valueSql= valueSql +(Double)field.get(obj)+","; }else if(fieldClass.toString().equals("boolean")){ valueSql= valueSql +(Boolean)field.get(obj)+","; }else if(fieldClass.toString().equals("class java.util.Date")){ valueSql= valueSql +"'"+formatTimeString(((Date)field.get(obj)).getTime() / 1000)+"',"; } return valueSql; } /** * 删除操做, 这个就是简单封装了个方法 * */ public int delete(Connection conn,String tableName,String keyName,int keyValue) throws SQLException { String sql = "DELETE from "+tableName+" where "+keyName+"="+keyValue; PreparedStatement st = conn.prepareStatement(sql); return st.executeUpdate(); }` 以上就是全部代码,本人是在维护一个很老的项目时用到过,因此顺便整理出来.须要的客官拿走即用. 第一次发帖,若有错误的地方请你们帮忙指出来,望你们多多包涵