JDBCUtil工具类回顾

本文介绍了一个Java项目中用于简化JDBC操作的实用工具类。该工具类通过线程本地变量确保每个线程拥有独立的数据库连接,并提供简便的方法获取连接、执行SQL语句及关闭资源。
package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import exception.DataAccessException;

public class JdbcUtil {
	private static Properties config;
	private static ThreadLocal<Connection> threadLocal;
	static{
		try {
			threadLocal=new ThreadLocal<Connection>();
			config=new Properties();
			config.load(JdbcUtil.class
								.getClassLoader()
								.getResourceAsStream("jdbc.properties"));
			Class.forName(config.getProperty("driver"));
		} catch (Exception e) {
			e.printStackTrace();
			throw new ExceptionInInitializerError("JdbcUtil初始化错误");
		} 
	}
	
	//保证一个事务一个连接,一个事务一个业务,一个事务一次操作,一个线程一个事务
	//每个线程获得一个连接
	public static Connection getConnection(){
		
		
		Connection con=threadLocal.get();
		
		if(con==null){
		
			try {
				con=DriverManager.getConnection(config.getProperty("url"),
												config.getProperty("username"),
												config.getProperty("password"));	
				threadLocal.set(con);
			} catch (Exception e) {
				e.printStackTrace();
				throw new DataAccessException("数据访问失败",e);
			}
		}
		return con;
	}
	
	public static void close(Connection con,PreparedStatement ps,ResultSet rs){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(ps!=null){
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(con!=null){
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	//关闭跟本线程相关的连接
	public static void close(){
		Connection con=threadLocal.get();
		if(con!=null){
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			threadLocal.remove();
		}
	}
	
}

一编程题(共40分)答题时间2小时 一个表,表名是TB_USER,格式如下 列名 userno 类型 userName Number (5) 约束 password Varchar(20) PK 说明 用户编号 job Varchar(20) Not null 用户名 sal Varchar(20) 密码 Number(5) 职位 工资 为这个表创建一个V0类 User,编写一个类 (UserDaoImp),实现UserDao的所有方法,并 编写一个测试类测试以下所有的方法 public interface UserDao { /** *创建表 */ public void createTable(); /** *插入一个用户 *@param User:被插入的用户对象 public void insert(User user): /** *登录,用户编号,密码正确,返回true,否则 返回false *@param userno:用户编号 *@param userno:密码 ** public bollean login(String userno,String password); /** *修改一个用户: *@param User:被修改的用户对象,用户对 象只含有用户编号,修改此编号 *查询所有的用户,将查询出的用户存储在 List中 *@return :所有用户对象的集合 public List<User> getAll(); *查询某一页的用户 *@param pagesize:每页的记录条数 *@param pageorder:页号(即第几页) *@return public List<User> getUserForPage(int pagesize,int pageOrder); /** *根据用户编号,查询出此编号对应的用户 *@return * public User getUserById(int id); 要求:创建一个工程,里面至少存储四个java文件. User:用户的实体类 UserDao:接口文件 UserDaoImpl:dao 的实现类 DaoTest:测试类,里面有主函数 将写完的工程,导出来,存储在以考生名子命名的文 件夹中,交给监考老师. 评分标准:是否实现了所有功能,代码的结构是否良 好,命名是否规范,是否有良好的注释.
05-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独步秋风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值