用了很久的JDBC+DBCP操作数据库,回过头发现DBUtil+C3p0更加的简单方便,大大减少了代码的书写,使代码更加的优化!!
下面是DBUtil+C3p0操作数据库的 增、删、改、查。
public class Test {
/**
* 添加
*/
@Test
public void testAddUser() {
try {
// 创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 编写SQL语句
String sql = "insert into tbl_user values(null,?,?)";
// 为占位符设置值
Object[] params = { "露西", "汤姆" };
// 执行添加操作
int rows = qr.update(sql, params);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 根据id更新用户
*
*/
@Test
public void testUpdateUserById() {
try {
// 创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 编写SQL语句
String sql = "update tbl_user set upassword=? where uid=?";
// 为站位符设置值
Object[] params = { "tom", 2001 };
// 执行添加操作
int rows = qr.update(sql, params);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 根据id删除用户
*/
@Test
public void testDeleteUserById() {
try {
// 创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 编写SQL语句
String sql = "delete from tbl_user where uid=?";
// 为站位符设置值
Object[] params = {23001};
// 执行添加操作
int rows = qr.update(sql, params);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
查询数据库的代码:
public class Test{
/*
* 查询所有用户
*/
@Test
public void testQueryAll() {
try {
// 获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 编写sql语句
String sql = "select * from tbl_user";
// 执行查询操作
List<User> users = qr.query(sql, new BeanListHandler<User>(User.class));
// 对结果集集合进行遍历
for (User user : users) {
System.out.println(user.getUname() + " : " + user.getUpassword());
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 根据id查询用户
*/
@Test
public void testQueryUserById() {
try {
// 获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 编写sql语句
String sql = "select * from tbl_user where uid=?";
//为占位符设置值
Object[] params = {21};
// 执行查询操作
User user = qr.query(sql, new BeanHandler<User>(User.class), params);
System.out.println(user.getUname() + " : " + user.getUpassword());
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 根据所有用户的总个数
*/
@Test
public void testQueryCount() {
try {
// 获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 编写sql语句
String sql = "select count(*) from tbl_user";
// 执行查询操作
Long count = (Long) qr.query(sql, new ScalarHandler());
System.out.println(count);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 查询所有用户方法
*/
@Test
public void testFindAll() {
try {
// 获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 编写sql语句
String sql = "select * from tbl_user";
// 执行查询操作
List<Map<String, Object>> list = qr.query(sql, new MapListHandler());
// 对结果集集合进行遍历
for (Map<String, Object> map : list) {
System.out.println(map);
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 查询所有用户方法
*/
@Test
public void testFindAll2() {
try {
// 获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 编写sql语句
String sql = "select * from tbl_user";
// 执行查询操作
List<Object> list = qr.query(sql, new ColumnListHandler("uname"));
// 对结果集集合进行遍历
for (Object object : list) {
System.out.println(object);
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}