JdbcUtils工具类(事务的开启)

jdbcUtils用来获取connection,底层使用了c3p0连接池,还需要mysql驱动!

首先需要导入三个jar的包文件,和一个c3p0的配置文件(c3p0-config.xml),如下图的三个文件,导入后 build path 一下.

下面的三个bar文件 ----> 链接: 三个jar包文件 密码: 549q.


还要导入这个jar包文件(JUnit.jar),用于@test.


最后把那个c3p0-config.xml的配置文件放入到src目录下.


双击配置文件c3p0-config.xml,修改自己的连接地址以及端口号,写上自己的mysql的用户名和密码.


代码如下:

package cn.itcast.test;

import java.sql.SQLException;

import org.junit.Test;

import cn.itcast.jdbc.JdbcUtils;

import com.mysql.jdbc.Connection;

/*
 * jdbcUtils用来获取connection
 * 底层使用了c3p0连接池!
 * 还需要mysql驱动
 */
public class jdbcutilsTest {
	/*
	 * 底层使用了c3p0连接池,说明我们还要提供c3p0配置文件
	 */
	@Test
	public void testGetconnec() throws SQLException{
		Connection con = (Connection) JdbcUtils.getConnection();
		System.out.println(con);
		JdbcUtils.releaseConnection(con);	//关闭连接,为什么不用close关闭,因为close是保证一定关闭,这个是和事务挂钩的,它与事务没关系就会关闭连接,与事务有关系就会不关闭!
		System.out.println(con.isClosed());
	}
	
	/*
	 * JdbcUtils还提供了事务相关的功能
	 */
	@Test
	public void testTransaction(){
		try {
			JdbcUtils.beginTransaction();//开启事务
			//多次操作
			JdbcUtils.commitTransaction();//提交事务
		} catch (Exception e) {
			try {
				JdbcUtils.rollbackTransaction();//回滚事务
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
	}
	
}

上面就是事务的开启与提交与回滚,下面是具体用到的事务的代码.

@Test
	public void testUpdate2() throws Exception{
		try {
			JdbcUtils.beginTransaction();		//开启事务
			
			String sql = "insert into reader(pid,pname,age,sex)values(?,?,?,?)";
			QueryRunner qr = new TxQueryRunner();	//我们没有给对象提供连接池
			Object[] params = {"2","p2",2,"女"};		//给sql中对应的参数
			qr.update(sql,params);	//执行
			
			if (false) {
				//如果为true抛出了异常,后面的params语句就不能执行了,就会到回滚事务.
				//并且前面的String sql 代码也不会执行
				throw new Exception();
			}
			
			params = new Object[]{"3","p3",3,"女"};
			qr.update(sql,params);	//执行
			
			JdbcUtils.commitTransaction();		//提交事务
		} catch (Exception e) {
			try {
				JdbcUtils.rollbackTransaction();	//回滚事务
			} catch (SQLException e2) {
				// TODO: handle exception
			}
			// TODO: handle exception
			throw e;
		}
	}
代码中具体讲解了事务的用法,有不清楚的可以问我!

猜你喜欢

转载自blog.csdn.net/superman___007/article/details/80397627