1.导包:commons-dbutils-1.6.jar
2. Prepare data, create tables and add data
create table product(
pid int primary key,
pname varchar(20),
price double,
category_id varchar(32)
);
INSERT INTO product(pid,pname,price,category_id) VALUES(1,'联想',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海尔',3000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷神',5000,'c001');
INSERT INTO product(pid,pname,price,category_id) VALUES(4,'JACK JONES',800,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真维斯',200,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公子',440,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(7,'劲霸',2000,'c002');
INSERT INTO product(pid,pname,price,category_id) VALUES(8,'香奈儿',800,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本草',200,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(10,'面霸',5,'c003');
INSERT INTO product(pid,pname,price,category_id) VALUES(11,'好想你枣',56,'c004');
INSERT INTO product(pid,pname,price,category_id) VALUES(12,'香飘飘奶茶',1,'c005');
INSERT INTO product(pid,pname,price,category_id) VALUES(13,'果9',1,NULL);
3. QueryRunner implements addition, modification and deletion
- Prepare a C3P0 connection pool tool class:
package bull05.DBUtils;
import java.sql.Connection;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3P0Utils {
private static ComboPooledDataSource dataSource= new ComboPooledDataSource("bull");
public static DataSource getDataSource() {
return dataSource;
}
public static Connection getConnection() {
try {
return dataSource.getConnection();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
- Additions, deletions and modifications:
package bull05.DBUtils;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
public class DBUtils {
@Test
public void demo1() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "insert into product (pid,pname,price,category_id) values (?,?,?,?);";
Object[] parms = {14,"耐克",999,"c002"};
int r = queryRunner.update(sql,parms);
System.out.println(r);
}
@Test
public void demo2() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "update product set pname = ?,price = ?,category_id = ? where pid = ?;";
Object[] parms = {"阿迪达斯",666,"c002",11};
int r = queryRunner.update(sql, parms);
System.out.println(r);
}
@Test
public void demo3() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "delete from product where pid = ?";
Object[] parms = {14};
int r = queryRunner.update(sql, parms);
System.out.println(r);
}
}
4.QueryRunner implements the query:
- Prepare a JavaBean file to encapsulate data:
package bull05.DBSelectUtils;
public class ProductJavaBean implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = -6968409272670177143L;
private String pid;
private String pname;
private String price;
private String category_id;
public ProductJavaBean(String pid, String pname, String price, String category_id) {
this.pid = pid;
this.pname = pname;
this.price = price;
this.category_id = category_id;
}
public ProductJavaBean() {
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getCategory_id() {
return category_id;
}
public void setCategory_id(String category_id) {
this.category_id = category_id;
}
@Override
public String toString() {
return "ProductJavaBean [pid=" + pid + ", pname=" + pname + ", price=" + price
+ ", category_id=" + category_id + "]";
}
}
package bull05.DBSelectUtils;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;
import bull05.DBUtils.C3P0Utils;
public class DBUtilsDemo {
@Test
public void demo() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product where pid = ?;";
Object[] parms = {10};
ProductJavaBean product = queryRunner.query(sql, new BeanHandler<ProductJavaBean>(ProductJavaBean.class), parms);
System.out.println(product);
}
@Test
public void demo2() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product;";
Object[] parms = {};
List<ProductJavaBean> list = queryRunner.query(sql, new BeanListHandler<ProductJavaBean>(ProductJavaBean.class), parms);
for (ProductJavaBean productJavaBean : list) {
System.out.println(productJavaBean);
}
}
@Test
public void demo3() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select count(*) from product;";
long obj = queryRunner.query(sql, new ScalarHandler<Long>());
System.out.println(obj);
}
@Test
public void demo4() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product where pid = ?;";
Object[] parms = {9};
Map<String,Object> map = queryRunner.query(sql, new MapHandler(), parms);
System.out.println(map);
}
@Test
public void demo5() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product;";
List<Map<String,Object>> list = queryRunner.query(sql, new MapListHandler());
for (Map<String, Object> map : list) {
System.out.println(map);
}
}
@Test
public void demo6() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product where pid = ?;";
Object[] parms = {1};
Object[] obj = queryRunner.query(sql, new ArrayHandler(), parms);
System.out.println(obj);
System.out.println(Arrays.toString(obj));
}
@Test
public void demo7() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product;";
List<Object[]> list = queryRunner.query(sql, new ArrayListHandler());
for (Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}
}
@Test
public void demo8() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product;";
Map<String,Map<String,Object>> map = queryRunner.query(sql, new KeyedHandler<String>("pname"));
for (Map.Entry<String, Map<String,Object>> entry:map.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
@Test
public void demo9() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from product where pid = ?;";
Object[] parms = {5};
List<Object> list1 = queryRunner.query(sql, new ColumnListHandler("pid"), parms);
List<Object> list2 = queryRunner.query(sql, new ColumnListHandler("pname"), parms);
List<Object> list3 = queryRunner.query(sql, new ColumnListHandler("price"), parms);
List<Object> list4 = queryRunner.query(sql, new ColumnListHandler("category_id"), parms);
System.out.println(list1);
System.out.println(list2);
System.out.println(list3);
System.out.println(list4);
}
}