⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 daoimpl.java

📁 一个可以存储和打印成绩单的系统
💻 JAVA
字号:
package org.minjey.cjsjk.dao;import java.lang.reflect.Field;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.HashMap;import java.util.LinkedList;import java.util.Queue;import org.minjey.cjsjk.model.Course;import org.minjey.cjsjk.model.Student;import org.minjey.cjsjk.util.Reflector;public class DaoImpl extends Dao {		private Reflector reflector = null;		private Connection conn;		public DaoImpl() {		reflector = new Reflector();		conn = DBConnection.getConnection();	}		public DaoImpl(Connection conn) {		reflector = new Reflector();		this.conn = conn;	}	public Integer delete(Object obj) {		Class cla = obj.getClass();				String tname = reflector.getClassName(cla);		Integer id = (Integer)reflector.getValue(obj, "id");		String sql = "DELETE FROM " + tname + " WHERE ID=" + id.intValue();		System.out.println("Attempt To Delete " + cla.getSimpleName() + ": " + obj.toString() + ".");		System.out.println("SQL: " + sql);		try {			conn.createStatement().execute(sql);			conn.commit();		} catch (SQLException e) {			e.printStackTrace();		}				System.out.println(cla.getSimpleName() + ": " + obj.toString() + " Delete Successd.");		return id;	}	public Object load(Class cla, Integer id) {				Object obj = null;				Class voc = cla.getSuperclass();		String tname = reflector.getClassName(voc);		String sql = "SELECT " + makeCNames(voc) + " FROM " + tname + " WHERE ID=?";		System.out.println("Attempt To Load " + cla.getSimpleName() + " Whose Id Is: " + id.toString() + ".");		System.out.println("SQL: " + sql);		try {			PreparedStatement pst = conn.prepareStatement(sql);			pst.setInt(1, id.intValue());			ResultSet rs = pst.executeQuery();			if(rs.next()) {				ResultSetUtil rsu = new ResultSetUtil();				obj = rsu.newObject(cla, rs);			}			rs.close();			pst.close();		} catch (SQLException e) {			e.printStackTrace();		}		System.out.println(cla.getSimpleName() + ": " + obj.toString() + " Load Successd.");				return toSubObject(obj);	}		public HashMap<Integer, Object> load(Class cla, Object fobj) {		String fcname = reflector.getClassName(fobj.getClass()) + "_id";		int fid = (Integer)reflector.getValue(fobj, "id");				Class voc = cla.getSuperclass();		HashMap<Integer, Object> objs = null;		String tname = reflector.getClassName(voc);				String sql = "SELECT " + makeCNames(voc) + " FROM " + tname + " WHERE " + fcname + "=" + fid;				System.out.println("Attempt To Load " + cla.getSimpleName() + " Whose " + fcname + " is: " + fid + ".");		System.out.println("SQL: " + sql);		try {			Statement st = conn.createStatement();			ResultSet rs = st.executeQuery(sql);			objs = new HashMap<Integer, Object>();			while(rs.next()) {				ResultSetUtil rsu = new ResultSetUtil();				Object obj = rsu.newObject(cla, rs);								obj = toSubObject(obj);				attach(fobj, obj);				Integer id = getId(fobj.getClass(), obj);				objs.put(id, obj);			}		} catch (SQLException e) {			e.printStackTrace();		}		System.out.println(cla.getSimpleName() + " Whose " + fcname + " is: " + fid + " Load Successd.");				return objs;	}		public HashMap<Integer, Object> loadall(Class cla) {				HashMap<Integer, Object> objs = null;				Class voc = cla.getSuperclass();		String tname = reflector.getClassName(voc);				String sql = "SELECT " + makeCNames(voc) + " FROM " + tname;		System.out.println("Attempt To Load " + cla.getSimpleName() + " All.");		System.out.println("SQL: " + sql);		try {			Statement st = conn.createStatement();			ResultSet rs = st.executeQuery(sql);			objs = new HashMap<Integer, Object>();			while(rs.next()) {				ResultSetUtil rsu = new ResultSetUtil();				Object obj = rsu.newObject(cla, rs);				obj = toSubObject(obj);				Integer id = (Integer)reflector.getValue(obj, "id");				objs.put(id, obj);			}			rs.close();			st.close();		} catch (SQLException e) {			e.printStackTrace();		}				System.out.println("All " + cla.getSimpleName() + "s Load Successd.");		return objs;	}	public Object save(Object obj) {		Class cla = obj.getClass();				Class voc = cla.getSuperclass();		String tname = reflector.getClassName(voc);				Field[] fields = voc.getDeclaredFields();				Queue<String> qcnames = new LinkedList<String>();		String cnames = new String();		String cvalues = new String();		for(int i = 0; i < fields.length; i ++) {			String cname = fields[i].getName();			if(cname.equals("id")){				continue;			}			qcnames.offer(cname);			cnames = cnames + cname + ",";			cvalues = cvalues + "?" + ",";		}		cnames = cnames.substring(0, cnames.length()-1);		cvalues = cvalues.substring(0, cvalues.length()-1);		String sql = "INSERT INTO " + tname + " (";		sql = sql + cnames + ") VALUES (" + cvalues + ")";		System.out.println("Attempt To Save New " + cla.getSimpleName() + ": " + obj.toString() + ".");		System.out.println("SQL: " + sql);		try {			PreparedStatement pst = conn.prepareStatement(sql);						PrepareStatementUtil psu = new PrepareStatementUtil();			psu.prepareStatement(qcnames, obj, pst);						pst.executeUpdate();						Integer id = getId(conn);			reflector.setValue(obj, "id", new Object[]{id});			pst.close();			conn.commit();		} catch (SQLException e) {			e.printStackTrace();		}		System.out.println("New " + cla.getSimpleName() + ": " + obj.toString() + " Save Successd.");				return obj;	}	public void update(Object obj) {		Class cla = obj.getClass();				Integer id = (Integer)reflector.getValue(obj, "id");				Class voc = cla.getSuperclass();				String tname = reflector.getClassName(voc);		Field[] fields = voc.getDeclaredFields();				Queue<String> qcnames = new LinkedList<String>();		String kvs = new String();		for(int i = 0; i < fields.length; i++) {			String cname = fields[i].getName();			if(cname.equals("id") || (reflector.getValue(obj, cname) == null)) {				continue;			}			qcnames.offer(cname);			kvs = kvs + cname + "=?" + ",";		}		kvs = kvs.substring(0, kvs.length() - 1);		String sql = "UPDATE " + tname + " SET ";		sql = sql + kvs + " WHERE ID=" + id.intValue();		System.out.println("Attempt To Save " + cla.getSimpleName() + ": " + obj.toString() + ".");		System.out.println("SQL: " + sql);				try {			PreparedStatement pst = conn.prepareStatement(sql);			PrepareStatementUtil psu = new PrepareStatementUtil();			psu.prepareStatement(qcnames, obj, pst);						pst.executeUpdate();			pst.close();			conn.commit();		} catch (SQLException e) {			e.printStackTrace();		}				System.out.println(cla.getSimpleName() + ": " + obj.toString() + " Save Successd.");	}		private Integer getId(Class cla, Object obj) {		Integer id = null;		if(cla.equals(Student.class)) {			id = (Integer)reflector.getValue(obj, "course_id");		} else if(cla.equals(Course.class)) {			id = (Integer)reflector.getValue(obj, "student_id");		} else {			id = (Integer)reflector.getValue(obj, "id");		}		return id;	}		private Integer getId(Connection connection) throws SQLException {   		CallableStatement callableStatement = connection.prepareCall("values identity_val_local()");   		ResultSet resultSet = callableStatement.executeQuery();   		resultSet.next();   		Integer id = resultSet.getInt(1);   		resultSet.close();   		callableStatement.close();		return id;   	}		private void attach(Object one, Object many) {		String oname = reflector.getClassName(one.getClass());	//获取一的名字		reflector.setValue(many, oname, new Object[]{one});	}		private Object toSubObject(Object obj) {		Class cla = obj.getClass();		String claname = cla.getCanonicalName();		claname = claname.replaceAll("vo", "model");		try {			cla = Class.forName(claname);			cla.cast(obj);		} catch (ClassNotFoundException e) {			e.printStackTrace();		}		return obj;	}			private String makeCNames(Class cla) {		String sql = new String();		Field[] fields = cla.getDeclaredFields();		for(int i = 0; i < fields.length; i ++) {			sql = sql + fields[i].getName() + ",";		}		sql = sql.substring(0, sql.length() - 1);		return sql;	}	@Override	public Connection getConnection() {		return conn;	}	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -