1.首先我们需要一个Java Bean 来存储查询出来的结果
Java Bean 为一个类 在开发中常永来封装数据
1. 需要实现接口 : java.io.Serializable 通常会省略
2.需要有私有字段 : private
3.提供 get和set 方法
4.需要提供无参构造
2.DBUtils来完成CRUD
核心功能介绍:
QueryRunner中提供sql语句操作的
ResultSetHandler接口 用于定义select操作后 封装结果街
DbUtils类 一个工具类 定义了关闭资源与事务处理的方法
3.1 QueryRunner核心类
QueryRunner(DataSource ds) 提供数据源 DBUtils底层自动维护连接Connection
update(String sql,Object … params) 执行更新数据
query(String sql,ResultSetHandler rsh,Object … params) 执行查询
3.2 ResultSetHandler结果集处理类
BeanHandler 将结果集第一条记录封装到一个指定的javaBean中
BeanListHandler 将结果集所有记录封装到一个指定的javaBean中 再封装到List中
ScalarHandler 用于但数据 select count(*) from 表 操作
4.操作
* 插入操作*
@Test
public void dem01() {
try {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "insert into user values(?,?)";
Object[] params = {"w2",22};
int row = qr.update(sql, params);
if(row>0) {
System.out.println("成功");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
删除操作
@Test
public void dem01() {
try {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "delete from user where name =?";
Object[] params = {"w2"};
int row = qr.update(sql, params);
if(row>0) {
System.out.println("成功");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
注意查询的时候 字段名要相同 要对应起来 这个入坑了半个小时。。。
单条查询操作
Java Bean类 在这是User类
public class User implements Serializable{
private String uname;
private String upassword;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpassword() {
return upassword;
}
public void setUpassword(String upassword) {
this.upassword = upassword;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
}`
查询
@Test
public void dem01() {
try {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from user where uname = '123' ";
Object[] params = {"w3","33"};
User user = qr.query(sql, new BeanHandler<User>(User.class));
System.out.println( user.getUname());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
多条查询
@Test
public void dem01() {
try {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from user ";
ArrayList<User> user = (ArrayList<User>) qr.query(sql, new BeanListHandler<User>(User.class));
for (User user2 : user) {
System.out.println(user2.getUname()+" = "+user2.getUname());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
总记录数
这里要用ScalarHandler()来存储数量 并且他的类型为Long类型要注意
@Test
public void dem01() {
try {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select count(*) from user ";
Long num = (Long) qr.query(sql, new ScalarHandler());
System.out.println(num);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}