package day20; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import com.mysql.jdbc.Connection; public class TestWithParamSelect { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { testWithParamSelect(); } public static void testWithParamSelect() throws Exception { /********************************************** * 匿名对象*/ ResultSetHandler resultSetHandler=new ResultSetHandler(){ public Object handle(ResultSet rs) throws SQLException { System.out.println("ResultSetHandlerImpl****************"); List<Person> list=new ArrayList<Person>(); while(rs.next()){ Person p=new Person(); p.setEmail(rs.getString(3)); p.setId(rs.getInt(1)); p.set姓名(rs.getString(2)); list.add(p); } return list; } }; /************************************************* */ //注册驱动 DBManager dbManager=new DBManager(); //获取连接 Connection conn=dbManager.getConnection(); String username="zhang"; String sql="select id,姓名,email from students where 姓名 like ?"; //设置参数 Object[] params=new Object[1]; params[0]="%"+username+"%"; /* * 执行sql的类,该类中提供了增删改查语句的方法 * query(conn,sql,rsh)第三个参数:转化结果集--->对象ResultHandler * ResultHandler实现类接口的返回值就是query 方法的返回值 * query.query(conn, sql,new ResultSetHandlerImpl()) * *该方法的返回值就是ResultHandler实现类接口ResultSetHandlerImpl的 * *的方法public Object handle(ResultSet rs) throws SQLException的返回值 * * 是由底层开发者调用,不需要自己调用 */ QueryRunner query=new QueryRunner(); Object obj=query.query(conn, sql,resultSetHandler,params); System.out.println("obj=== "+obj); // Person p1=(Person)obj; // System.out.println(p1.getId()+" "+p1.get姓名()+" "+p1.getEmail()); List<Person> list1=(List)obj; for(Person p:list1){ System.out.println(p.getId()+" "+p.get姓名()+" "+p.getEmail()); } } }