按视频一步步操作,不知少做了哪一步
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;
}
}
,程序中都没有报错,在网上找了各种解决方法都无效。求指导。