编程小白的学习日常 2021-05-06 19:39 采纳率: 0%
浏览 72

用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;
}

}
  • 写回答

4条回答 默认 最新

  • 关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体