最通俗易懂的 java(工具类)

               java(DBUtile工具类)
	8.1:使用步骤:
			第一步:导Jar包:commons-dbutils-1.6.jar
		   	第二步:创建DBUtils工具类执行对象:
				QueryRunner qr=new QueryRunner(连接池对象);
		  第三步:使用执行对象执行sql
				执行查询语句: qr.query(sql1,转换器对象,object...params);
						转换器:将结果集转换为对象集合BeanListHandler
								将结果集转换为对象BeanHandler
								将结果集中第一行转换为Map集合:MapHandler
				执行增加/修改/删除:int result=qr.update(sql1,object...params);

 第三步中各个转化器的区别:
          1. BeanListHandler:再结合csp0连接池操作jdbc,他要赋值给一个变量时因为他是一个对象集合要在构造器里转成声明集合的对象类型
 那又为什么是通过Student.class反射对象转呢? 因为:Student类是一个实体类,用的私有的只有通过反射才能得到。          
  eg:/**
 * 调用Dao层得到当前页的数据
 * @param p
 * @return
 */
@Override
public List querystudent(PageTool p) {
	//声明一个集合存学生对象
	List stu= new ArrayList<>();
	try {
		// 准备sql语句
		String sql = "SELECT name,password,sex,email,hobby,city from student limit ?,?";
		stu=qr.query(sql,new BeanListHandler<>(Student.class),p.getBeginningpage(),p.getPagenumber());
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return stu;
}
        2.BeanHandler:他的结果赋值给一个对象时也要注意对象的一个转换
        eg:/**
 * 根据用户名查询用户信息
 * @param
 * @return
 */
public Student queryuser(String uname) {
	// 生明一个学生对象
	Student s1 = null;
	try {
		// 准备sql语句
		String sql = "SELECT NAME,PASSWORD,sex,email,hobby,city from student where name=?";
		s1=qr.query(sql,new BeanHandler<>(Student.class),uname);
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return s1;
}
        3.MapHandler:要注意的是因为他是一个建值对,赋值给变量的时候健名的数据类型和变量的数据类型要一致
    eg:/**
 * 学生登录(要去数据库的查询数据)
 * 因为要获得姓名和密码,所以接收的是第一列的数据所以用MapHandler转化器比较合理
 * Map列名是String类型,列值默认是Object类型,这里的健名是num
 * @param loginVo
 */
public int login(LoginUserVo loginVo) {
	//生命一个变量存登录结果
	int result = 0;
	try {
		// 准备sql语句
		String sql = "SELECT COUNT(NAME) as num FROM student WHERE NAME=? AND PASSWORD=? ";
		// 调用工具类查询
	Map resultmap=qr.query(sql,new MapHandler(),loginVo.getName(), loginVo.getPassword());
	//他要一个别名去查询这个用户名存不存在他要一个int类型(这里得到的是Object类型转成int类型怎么转,要先把他转成String类型再把它转成int类型)
		result=Integer.valueOf(resultmap.get("num").toString());
	} catch (SQLException e) {
		e.printStackTrace();
	}
		return result;
}

你可能感兴趣的:(最通俗易懂的 java(工具类))