java----DBUtils知识点补充
dbutils 只是帮我们简化了CRUD 的代码, 但是连接的创建以及获取工作。 不在他的考虑范围
QueryRunner主要是这个类
import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import com.mchange.v2.c3p0.ComboPooledDataSource; public class DBUtilsDemo1 { //dbutils 只是帮我们简化了CRUD 的代码, 但是连接的创建以及获取工作。 不在他的考虑范围 //QueryRunner主要是这个类 public static void main(String[] args) throws SQLException { //本部分演示QueryRunner类的增加,删除,更新 //结合C3p0的配置文件的使用方式,直接一行代码获取连接 QueryRunner queryRunner=new QueryRunner(new ComboPooledDataSource()); //增加 String sql="insert into blank values (null,?,?)"; //删除 String sql2="delete from blank where id=?"; //更新 String sql3="update blank set money=? where id=?"; //直接执行就可以了 //queryRunner.update(sql,"testroot",20000000); //删除的执行语句 //queryRunner.update(sql2,1); //更新的执行语句 queryRunner.update(sql3,800000,3); } }
下面是实现从数据库中查询一条或者多条数据
有如下六种方法
######ResultSetHandler 常用的实现类(重点) 以下两个是使用频率最高的 BeanHandler, 查询到的单个数据封装成一个对象 BeanListHandler, 查询到的多个数据封装 成一个List<对象> ------------------------------------------ ArrayHandler, 查询到的单个数据封装成一个数组
ArrayListHandler, 查询到的多个数据封装成一个集合 ,集合里面的元素是数组。
MapHandler, 查询到的单个数据封装成一个map MapListHandler,查询到的多个数据封装成一个集合 ,集合里面的元素是map。
首先看下常规的操作
import java.sql.ResultSet; import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import com.mchange.v2.c3p0.ComboPooledDataSource; import com.sun.swing.internal.plaf.basic.resources.basic; public class DBUtilDemo2 { //演示查询一条或者多条数据库中的信息 public static void main(String[] args) throws SQLException { //首先一条语句获得数据库的连接 QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource()); //然后使用ResultSetHandler(这种不是框架,属于常规操作) Account accoun = queryRunner.query("select * from blank where id = ?", new ResultSetHandler<Account>(){ public Account handle(ResultSet rs) throws SQLException { Account account=new Account(); while(rs.next()){ String name=rs.getString("name"); int money=rs.getInt("money"); account.setName(name); account.setMoney(money); } return account; } },5); System.out.println(accoun.getName()+"========"+accoun.getMoney()); } }
BeanHandler, 查询到的单个数据封装成一个对象
public class DBUtilDemo2 { //演示查询一条或者多条数据库中的信息 public static void main(String[] args) throws SQLException { //首先一条语句获得数据库的连接 QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource()); //然后使用ResultSetHandler(这种不是框架,属于常规操作) Account accoun = queryRunner.query("select * from blank where id = ?", new BeanHandler<Account>(Account.class),5); System.out.println(accoun.getName()+"========"+accoun.getMoney()); //testroot========20000000 } }
BeanListHandler, 查询到的多个数据封装 成一个List<对象>
import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import com.mchange.v2.c3p0.ComboPooledDataSource; import com.sun.swing.internal.plaf.basic.resources.basic; public class DBUtilDemo2 { //演示查询一条或者多条数据库中的信息 public static void main(String[] args) throws SQLException { //首先一条语句获得数据库的连接 QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource()); //BeanListHandler获得数据库的全部信息 List<Account> list= queryRunner.query("select * from blank", new BeanListHandler<Account>(Account.class)); //遍历输出 int len=list.size(); for(int i=0;i<len;i++){ Account blank=list.remove(0); System.out.println(blank.getName()+"====="+blank.getMoney()); } } }
其中Account类代码如下
public class Account { public String name; public int money; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMoney() { return money; } public void setMoney(int money) { this.money = money; } }
一纸高中万里风,寒窗读破华堂空。
莫道长安花看尽,由来枝叶几相同?