用eclipse连接mysql插入数据时有空指针异常

//这个是测试的代码块
package dao.impl;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

import pojo.User;

@SuppressWarnings("unused")
class UserDaoTest {
	UserDao userDao=new UserDaoImpl();
	@Test
	void testQueryUserByusername() {
		//fail("Not yet implemented");
		
		if(userDao.queryUserByusername("admin123")==null) {
			System.out.println("用户名可用!");
		}
		else {
			System.out.println("用户名已存在!");
		}
	}

	@Test
	void testQueryUserByusernameAndpassword() {
		//fail("Not yet implemented");
		if(userDao.queryUserByusernameAndpassword("admin","admin123")==null)
		{System.out.println("用户名或密码错误!登录失败!");
			
		}
		else {
			System.out.println("查询成功!");
		}
	}

	@Test
	void testSaveUser() {
		//fail("Not yet implemented");
		
		
		//System.out.println(userDao.saveUser(new User(null,"admins","12d2888","w17f8@qq.com")));
		System.out.println( userDao.saveUser(new User(null,"wzg168", "123456", "wzg168@qq.com")));
	}

}

package dao.impl;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

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.apache.jasper.compiler.NewlineReductionServletWriter;

import utils.JdbcUtilss;

@SuppressWarnings("unused")
public abstract class BaseDao {
//使用Jdbcutilss来操作数据库
	private QueryRunner queryRunner=new QueryRunner();
	//使用update方法执行insert和update与delete操作
	public int update(String sql,Object...args) {
		Connection connection=JdbcUtilss.getConnection();
		try {
			return queryRunner.update(connection, sql, args);

			
		//return queryRunner.update(connection,sql,args);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			JdbcUtilss.close(connection);
		}
		return -1;
		
		
	}
	/**
	* 查询返回一个 javaBean 的 sql 语句
	*
	* @param type 返回的对象类型
	* @param sql 执行的 sql 语句
	* @param args sql 对应的参数值
	* @param <T> 返回的类型的泛型
	 * @return 
	* @return
	*/
	public <T> T queryForOne(Class<T>type,String sql,Object...args){
		Connection conn=JdbcUtilss.getConnection();
		try {
			return queryRunner.query(conn, sql, new BeanHandler<T>(type), args);
		} catch (Exception e) {
			// TODO: handle exception
		}
		finally {
			JdbcUtilss.close(conn);
		}
		return null;
	}
	/**
	* 查询返回多个 javaBean 的 sql 语句
	*
	* @param type 返回的对象类型
	* @param sql 执行的 sql 语句
	* @param args sql 对应的参数值
	* @param <T> 返回的类型的泛型
	* @return
	*/
	public <T> List<T> queryForList(Class<T>type,String sql,Object...args){
		Connection conn=JdbcUtilss.getConnection();
		try {
			return  queryRunner.query(conn, sql, new BeanListHandler<T>(type), args);
		} catch (Exception e) {
			// TODO: handle exception
		}
		finally {
			JdbcUtilss.close(conn);
		}
		return null;
	}
	
	//返回执行一个一行一列;
	public Object quarForStringValue(String sql,Object...args) {
		Connection con=JdbcUtilss.getConnection();
		try {
			return queryRunner.query(con, sql, new ScalarHandler(),args);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally {
			JdbcUtilss.close(con);
		}
		return null;
	}

}

 

 

//接口
package dao.impl;

import pojo.User;

public interface UserDao {
	

	public User queryUserByusername(String username);
	//public User queryUserByUsername(String username);	
	public User queryUserByusernameAndpassword(String username,String password);
	
	public int saveUser(User user);
}
package dao.impl;

import pojo.User;

public class UserDaoImpl  extends BaseDao implements
UserDao{

	@Override
	public User queryUserByusername(String username) {
		// TODO Auto-generated method stub
		String sql="select`id`,`username`,`password`,`email` from t_user where username= ?";
		return queryForOne(User.class, sql, username);
	}

	@Override
	public User queryUserByusernameAndpassword(String username, String password) 
	{
		
		String sql="select`id`,`username`,`password`,`email` from t_user where username = ? and password = ?";
		// TODO Auto-generated method stub
		return queryForOne(User.class, sql, username,password);
	}

	@Override
	public int saveUser(User user) {
		// TODO Auto-generated method stub
		/*
		 * String sql="insert into t_user(`username`,`password`,`email`)value(?,?,?)";
		 * return update(sql, user.getUsername(),user.getPassword(),user.getEmail());
		 */
		String sql = "insert into t_user(`username`,`password`,`email`)values(?,?,?)";
		//return update(sql, user.getUsername(),user.getPassword(),user.getEmail());
		return update(sql, user.getUsername(),user.getPassword(),user.getEmail());
	}
	

}

 

//类User
package pojo;

public class User {
 private Integer id;
 private String  username;
 private String  password;
 private String  email;
public Integer getId() {
	return id;
}
public void setId(Integer id) {
	this.id = id;
}
public String getUsername() {
	return username;
}
public void setUsername(String username) {
	this.username = username;
}
public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}
@Override
public String toString() {
	return "User [id=" + id + ", username=" + username + ", password=" + password + ", email=" + email + ", getId()="
			+ getId() + ", getUsername()=" + getUsername() + ", getPassword()=" + getPassword() + ", getEmail()="
			+ getEmail() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()="
			+ super.toString() + "]";
}

public User() {
	
}
public User(Integer id, String username, String password, String email) {
	super();
	this.id = id;
	this.username = username;
	this.password = password;
	this.email = email;
}

}

 

userDao.saveUser(new User(null,"wzg168", "123456", "wzg168@qq.com"))); 改为 userDao.saveUser(new User(0,"wzg168", "123456", "wzg168@qq.com")

请问该怎么办处理呢

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y