package DBUtils_; import druid_.Actor; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.junit.Test; import java.sql.Connection; import java.sql.SQLException; import java.util.List; /** * 使用Apache-DBUtils 工具类 + Druid 完成对Actor表的CRUD操作 */ public class DBUtils_Use { //select语句用queryRunner.query() @Test public void testQueryMany() throws SQLException { //1.得到连接(用Druid) Connection connection = JDBCUtilsByDruid.getConnection(); //2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本Project中。 //3.创建QueryRunner QueryRunner queryRunner = new QueryRunner(); //4.可以执行相关的方法,返回ArrayList结果集。 //String sql = "select * from actor where id >= ?"; //也可以查询部分列,只不过其余列的值为null。 String sql = "select id,name from actor where id >= ?"; List<Actor> list = queryRunner.query(connection, sql, new BeanListHandler<>(Actor.class), 1); /* 说明: 1. query()方法就是执行sql语句,得到resultSet ---封装到---> ArrayList集合中 2. 之后就返回集合 3. connection:连接 4. sql:要执行的sql语句 5. new BeanListHandler<>(Actor.class):将resultSet -> Actor对象 -> 封装到ArrayList 底层使用反射机制去获取Actor类的属性,然后进行封装。 6. 1:就是给sql语句中的 ? 赋值,可以有多个值,因为是可变参数Object... params。 7. 底层得到的resultSet,会在query方法中关闭,PreparedStatment也会被关闭。 */ for(Actor actor : list){ System.out.print(actor); } //释放资源 //这里传入null即可,因为前面已经关闭了。 JDBCUtilsByDruid.Close(null,null,connection); } //演示 Apache-DBUtils + Druid 完成返回的结果是单行记录(单个对象)。 @Test public void testQuerySingle() throws SQLException { //1.得到连接(用Druid) Connection connection = JDBCUtilsByDruid.getConnection(); //2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本Project中。 //3.创建QueryRunner QueryRunner queryRunner = new QueryRunner(); //4.可以执行相关的方法,返回单个的记录。 String sql = "select * from actor where id = ?"; //new BeanHandler<>(Actor.class):因为返回的是单行记录--->单个对象,所以用BeanHandler。 Actor actor = queryRunner.query(connection, sql, new BeanHandler<>(Actor.class), 1); //这里的4:表示给?赋值为4 if (actor != null) System.out.println(actor); else System.out.println("查无此信息!"); //释放资源 JDBCUtilsByDruid.Close(null,null,connection); } //演示Apache-DBUtils + Druid 完成查询结果是单行单列---返回的就是Object @Test public void testScalar() throws SQLException { //1.得到连接(用Druid) Connection connection = JDBCUtilsByDruid.getConnection(); //2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本Project中。 //3.创建QueryRunner QueryRunner queryRunner = new QueryRunner(); //4.返回单行单列,返回的就是Object。 String sql = "select name from actor where id = ?"; //说明:返回单行单列用ScalarHandler() Object obj = queryRunner.query(connection, sql, new ScalarHandler(), 1); if (obj != null) System.out.println(obj); else System.out.println("查无此人!"); //释放资源 JDBCUtilsByDruid.Close(null,null,connection); } //演示Apache-DBUtils + Druid 完成 dml语句(update,insert,delete) //dml语句用:queryRunner.update() @Test public void testDML() throws SQLException { //1.得到连接(用Druid) Connection connection = JDBCUtilsByDruid.getConnection(); //2.使用DBUtils类和接口,先引入DBUtils相关的jar,加入到本Project中。 //3.创建QueryRunner QueryRunner queryRunner = new QueryRunner(); //4.这里组织sql语句,完成update,insert,delete。 //String sql = "update actor set name = ? where id = ?"; //String sql = "insert into actor values (?,?,?,?,?)"; String sql = "delete from actor where id = ?"; //执行dml操作是 queryRunner.update(),insert,delete,update都是用这个方法。 //返回值是:受影响的行数 //int affectedRow = queryRunner.update(connection, sql, "TOM","4"); //int affectedRow = queryRunner.update(connection, sql, null,"LUCA","男","2000-09-10","000"); int affectedRow = queryRunner.update(connection, sql, "1"); System.out.println(affectedRow > 0 ? "执行成功" : "表未受改变"); //释放资源 JDBCUtilsByDruid.Close(null,null,connection); } }
10-01
1805

07-18
1403

08-16
1279

03-07
1043
