weixin_50764406 2021-06-19 16:34 采纳率: 100%
浏览 45
已采纳

初学java web 测试类运行时报错,如何能解决

按视频一步步操作,不知少做了哪一步

package cn.ybzy.mvcproject.utils;

import org.junit.jupiter.api.Test;

import cn.ybzy.mvcproject.dao.UserDao;
import cn.ybzy.mvcproject.dao.UserDaoImpl;
import cn.ybzy.mvcproject.model.User;


class UserDaoImplTest {
	UserDao userDao = new UserDaoImpl();

	@Test
	void testGetInt() {
		
		User user = userDao.get(2);
		System.out.println(user);
	}

}

package cn.ybzy.mvcproject.dao;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import cn.ybzy.mvcproject.utils.JdbcUtils;

import com.mchange.v2.c3p0.ComboPooledDataSource.*;

/*
 * 這是一個dao的基本類,在與被具體的dao類繼承,UserDao去繼承它來用的,不能用 new Dao()來直接使用它
 * 爭對要操作的數據表映射到JAVA工程裏的JAVA類
 * 對數據庫進行增、刪、改、查
 */
public class BaseDao<T> {
	QueryRunner queryRunner = new QueryRunner();
	
	/*
	 * 查询数据表,取出SQL语句结果集的第一个数据,封装成一个类的对像返回,不支持事务。
	 */
	private Class<T> clazz;
	public BaseDao() {
		//用BaseDao构造方法初始化clazz属性
		Type superType = this.getClass().getGenericSuperclass();//getGenericSuperclass的作用是拿到调用者的父类
		if(superType instanceof ParameterizedType) {
			ParameterizedType pt = (ParameterizedType) superType;
			Type[] tarry = pt.getActualTypeArguments();//返回一个类型数组,第一个元数就是我们需要的T,User.calss
			if(tarry[0] instanceof Class) {
				clazz = (Class<T>) tarry[0];
			}
		}
	}
	
	public T get(String sql,Object...args) {
		Connection conn = null;
		T entity = null;
		try {
			conn = JdbcUtils.getConnection();
			entity = queryRunner.query(conn, sql, new BeanHandler<T>(clazz), args);
			//null的位置,需要转入BaseDao<T>里面的T的真正用起来的类型Class;
		}catch (Exception e){
			e.printStackTrace();
		}finally {
			JdbcUtils.closeConn(conn);
		}
		
		return entity;		
	}
	/*
	 * 查询数据表,取出SQL语句结果集的第一个数据,封装成一个类的对像返回,不支持事务。
	 */
	public T get(Connection conn,String sql,Object...args) {
		T entity = null;
		try {
			entity = queryRunner.query(conn, sql, new BeanHandler<T>(clazz), args);
		}catch (Exception e){
			e.printStackTrace();
		}finally {
			
		}
		
		return entity;		
	}

	
}


package cn.ybzy.mvcproject.dao;

import java.util.List;

import cn.ybzy.mvcproject.model.User;

public class UserDaoImpl extends BaseDao<User> implements UserDao {

	@Override
	public int save(User user) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int deleteUserByID(int id) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int updateUserByID(int id) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public User get(int id) {
		// TODO Auto-generated method stub
		String sql = "select `id`,`username`,`pasword`,`phone_no` phoneNo,`address`,`reg_date` regDate from `users` where `id`=?; ";
		return super.get(sql, id);
		
	}

	@Override
	public List<User> getListAll() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int getCountByName(String username) {
		// TODO Auto-generated method stub
		return 0;
	}

}

,程序中都没有报错,在网上找了各种解决方法都无效。求指导。

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-06-19 16:41
    关注

    报错信息方便发出来看看嘛,看下你的报错,以及哪一行报错的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵