没用Hibernate 练手型的写了个DBUtil类

package com.codeguy.util;


import java.lang.reflect.*;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;




import com.codeguy.domain.Users;


public class DBUtil {
	
	public static void main(String[] args){
		//String[] values = {"fanhao","haohao"};
		//add("insert into users(username,password)values(?,?)",values);
		Users user = new Users();
		user.setId(23);
		user.setUsername("fanhao");
		user.setPassword("haohao");
		List<Object> list = query(user,0,5);
		
		for(int i=0; i<list.size(); i++){
			Users u = (Users)list.get(i);
			System.out.println(u.getId()+" -- " + u.getUsername() + " -- "+u.getPassword());
		}
		
		//增,刪,分頁查 實現了  大體測試了一下  沒啥問題..... 我只用到三個 所以就寫了三個..
		
		
		
		//一些鸟异常 就直接抛了...
		
	}
	
	private static Connection conn = null;
	private static  PreparedStatement pst = null;
	private static ResultSet rs = null;
	
	private static Connection getConnection(){
		try {
			Class.forName("com.mysql.jdbc.Driver");
			try {
				conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/study","root","haohao");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
	
	private static String getTableName(Object obj){
		
		String className = obj.getClass().getName();
		String tableName = className.substring(className.lastIndexOf(".")+1,className.length());
		return tableName;
	}
	
	public static void add(Object obj){
		StringBuffer fields = new StringBuffer();
		StringBuffer values = new StringBuffer();
		String[] fieldsName = getFieldName(obj);
		for(int i=0; i<fieldsName.length; i++){
			fields.append(fieldsName[i]);
			values.append("?");
			if(i != fieldsName.length-1){
				fields.append(",");
				values.append(",");
			}
		}
		
		StringBuffer sql = new StringBuffer();
		sql.append("INSERT INTO "+getTableName(obj)+"(");
		sql.append(fields+")");
		sql.append("VALUES("+values+")");
		
		getConnection();
		
		try {
			conn.setAutoCommit(false);
			pst = conn.prepareStatement(sql.toString());
			for(int i=0; i<fieldsName.length; i++){
				pst.setObject(i+1,getFieldValues(obj, fieldsName[i].toString()));
			}
			pst.executeUpdate();
			conn.commit();
		} catch (SQLException e) {
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			e.printStackTrace();
		}finally{
			try {
				conn.setAutoCommit(true);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			close();
		}
		
	}


	public static int delete(Object obj,String primary){
		String[] fields = getFieldName(obj);
		StringBuffer rule = new StringBuffer();
		for(int i=0; i<fields.length; i++){
			Object temp = getFieldValues(obj, fields[i]);
			if(temp != null){
				if(getFieldType(obj, fields[i]).equals(String.class)){
					rule.append(" "+fields[i]+"='"+temp+"' ");
				}else{
					rule.append(" "+fields[i]+"="+temp+" ");
				}
				if(i!=fields.length-1){
					rule.append(" AND ");
				}
			}
			
		}
		getConnection();
		try {
			int key = 0;
			pst = conn.prepareStatement("SELECT id FROM "+getTableName(obj)+" WHERE "+rule.toString());
			rs = pst.executeQuery();
			if(rs.next()){
				key = rs.getInt(1);
			}
			if(key != 0)
				pst.executeUpdate("DELETE FROM "+getTableName(obj)+" WHERE "+primary+"="+key);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			close();
		}
		return 0;
	}
	
	public static List<Object> query(Object obj,int start,int end){
		List<Object> list = new ArrayList<Object>();
		String sql = "SELECT * FROM "+getTableName(obj)+" limit "+start+", "+end;
		getConnection();
		try {
			pst = conn.prepareStatement(sql);
			rs = pst.executeQuery();
			String[] fields = getFieldName(obj);
			Class cls = obj.getClass();
			Method method = null;


			while(rs.next()){
				Object o = null;
				try {
					o = cls.newInstance();
					for(int i=0; i<fields.length; i++){
						try {
							method = cls.getMethod("set"+upCase(fields[i]),getFieldType(obj, fields[i]));
							try {
								method.invoke(o, rs.getObject(fields[i]));
							} catch (IllegalArgumentException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							} catch (InvocationTargetException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						} catch (SecurityException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (NoSuchMethodException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}						
					}
				} catch (InstantiationException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}


				list.add(o);
			}
		}catch(SQLException ex){
			ex.printStackTrace();
		}finally{
			close();
		}
		
		return list;
	}
	
	
	private static void close(){
		try{
			if(rs != null){
				rs.close();
			}
			rs = null;
			if(pst != null){
				pst.close();
			}
			pst = null;
			if(conn != null){
				conn.close();
			}
			conn = null;
		}catch(SQLException ex){
			ex.printStackTrace();
		}
	}
	
	private static String[] getFieldName(Object obj){
		
		Class cls = obj.getClass();
		Field fields[] = cls.getDeclaredFields(); 
		String[] fieldNames = new String[fields.length];
		
		for(int i=0; i<fields.length; i++){
			fieldNames[i] = fields[i].getName();
		}
		return fieldNames;
	}
	
	private static Object getFieldValues(Object obj,String fieldName){
		Class cls = obj.getClass();
		Object value = null;
	
		Method methodGet = null;
			try {
				methodGet = cls.getMethod("get"+upCase(fieldName));
				try {
					value = methodGet.invoke(obj);
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			} catch (SecurityException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NoSuchMethodException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		return value;
	}


	private static String upCase(String str) {
		char fristCh = str.charAt(0);
		if (Character.isUpperCase(fristCh)) {
			return str;
		}
		String buf = str.substring(1);
		StringBuffer retStr = new StringBuffer();
		retStr.append((char) (fristCh - 0x20));
		retStr.append(buf);
		return retStr.toString();
	}
	
	private static Class getFieldType(Object obj,String name){
		Class cls = obj.getClass();
		Field field = null;
		try {
			field = cls.getDeclaredField(name);
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return field.getType();
	}


	
}

【6层】一字框架办公楼(含建筑结构图、计算书) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
1、资源项目源码均已通过严格测试验证,保证能够正常运行;、 2项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值