JDBC中--保存--方法详解

本文介绍了一个简单的Java用户管理系统,包括实体类、DAO层及测试方法。系统实现了用户信息的增删改查等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实体类

package day03;
/**
 * 实体类
 * 用于表示数据库中表user
 */
public class User {
	private int id;
	private String name;
	private String password;
	private int money;
	private String email;
	private int deptno;
	
	public User() {
	}
	
	public User(int id, String name, String password, int money, String email, int deptno) {
		super();
		this.id = id;
		this.name = name;
		this.password = password;
		this.money = money;
		this.email = email;
		this.deptno = deptno;
	}

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password + ", money=" + money + ", email=" + email
				+ ", deptno=" + deptno + "]";
	}
	
}
DAO

package day03;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import day01.DBUtil2;

/**
 * UserDAO
 * 用于操作数据库User表的DAO
 */
public class UserDAO {
	private static final String FIND_BY_SQL =
			"SELECT * FROM user_wq WHERE id=?";
	private static final String FIND_ALL_SQL = 
			"SELECT * FROM user_wq";
	private static final String SAVE_SQL = 
			"INSERT INTO user_wq VALUES (user_seq.nextval,?,?,?,?,?)";
	private static final String UPDATE_SQL = 
			"UPDATE user_wq SET name=?,password=?,money=?,email=?,deptno=? WHERE id=?";
	private static final String DELETE_SQL =
			"DELETE FROM user_wq WHERE id=?";
	
	//根据id查询对应的User记录
	public User findById(int id){
		try {
			Connection conn = DBUtil2.getConnection();
			PreparedStatement ps = conn.prepareStatement(FIND_BY_SQL);
			ps.setInt(1, id);
			ResultSet rs = ps.executeQuery();
			if(rs.next()){
				int i = rs.getInt("id");
				String name = rs.getString("name");
				String password = rs.getString("password");
				int money = rs.getInt("money");
				String email = rs.getString("email");
				int deptno = rs.getInt("deptno");
				User user = new User(i,name,password,money,email,deptno);
				return user;
			}
			ps.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBUtil2.closeConnection();
		}
		return null;
	}
	
	//查询所有的User记录
	public List<User> findAll(){
		try {
			Connection conn = DBUtil2.getConnection();
			Statement state = conn.createStatement();
			ResultSet rs = state.executeQuery(FIND_ALL_SQL);
			List<User> list = new ArrayList<User>();
			while(rs.next()){
				int id = rs.getInt("id");
				String name = rs.getString("name");
				String password = rs.getString("password");
				int money = rs.getInt("money");
				String email = rs.getString("email");
				int deptno = rs.getInt("deptno");
				User user = new User(id,name,password,money,email,deptno);
				list.add(user);
			}
			state.close();
			return list;
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBUtil2.closeConnection();
		}
		return null;
	}
	
	//保存一个User信息
	public boolean save(User user){
		try {
			Connection conn = DBUtil2.getConnection();
			PreparedStatement ps = conn.prepareStatement(SAVE_SQL,new String[]{"id"});
			ps.setString(1, user.getName());
			ps.setString(2, user.getPassword());
			ps.setInt(3, user.getMoney());
			ps.setString(4, user.getEmail());
			ps.setInt(5, user.getDeptno());
			//User实体类中的id是由数据库序列生成的,在插入时候,并不知道
			//id的值,等插入完成后,返回该id再从新对User中的id赋值
			if(ps.executeUpdate() > 0){
				//插入成功后获取主键的值
				ResultSet rs = ps.getGeneratedKeys();
				rs.next();
				int id = rs.getInt(1);
				user.setId(id);
				ps.close();
				return true;
			}
			ps.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBUtil2.closeConnection();
		}
		return false;
	}
	
	//更新一个User信息
	public boolean update(User user){//已经知道该user的id,所以不用返回id
		try {
			Connection conn = DBUtil2.getConnection();
			PreparedStatement ps = conn.prepareStatement(UPDATE_SQL);
			ps.setString(1, user.getName());
			ps.setString(2, user.getPassword());
			ps.setInt(3, user.getMoney());
			ps.setString(4, user.getEmail());
			ps.setInt(5, user.getDeptno());
			ps.setInt(6, user.getId());
			if(ps.executeUpdate() > 0){
				//若更新成功
				ps.close();
				return true;
			}
			ps.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBUtil2.closeConnection();
		}
		return false;
	}
	
	//根据id删除一个User信息
	public boolean deleteById(int id){
		try {
			Connection conn = DBUtil2.getConnection();
			PreparedStatement ps = conn.prepareStatement(DELETE_SQL);
			ps.setInt(1, id);
			if(ps.executeUpdate() > 0){
				//删除成功
				ps.close();
				return true;
			}
			ps.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBUtil2.closeConnection();
		}
		return false;
	}
}
测试类

package day03;

import java.util.List;
import org.junit.Test;
public class MyUserService {
	@Test//根据id查询对应的User记录
	public void test1(){
		UserDAO dao = new UserDAO();
		User user = dao.findById(2);
		if(user != null){
			System.out.println("欢迎你:"+user.getName());
		}else{
			System.out.println("没有这个人");
		}
	}

	@Test//查询所有的User记录
	public void test2(){
		UserDAO dao = new UserDAO();
		List<User> list = dao.findAll();
		for(User s : list){
			System.out.println(s.getName());
		}
	}
	
	@Test//保存一个User信息
	public void test3(){
		User user = new User();
		user.setName("LUCY");
		user.setPassword("123456");
		user.setMoney(2500);
		user.setEmail("LUCY@qq.com");
		user.setDeptno(10);
		//0 此处可以不用设置id,通过数据库生成
		System.out.println("插入前id:"+user.getId());
		UserDAO dao = new UserDAO();
		System.out.println(user);
		boolean flag = dao.save(user);
		if(flag){
			System.out.println("保存成功");
			//保存成功后User对象中的id就有了值
			System.out.println("插入后id:"+user.getId());
		}else{
			System.out.println("保存失败");
		}
	}
	
	@Test//更新一个User信息
	public void test4(){
		User user = new User();
		user.setId(1002);
		user.setName("蛋蛋");
		user.setPassword("99999");
		user.setEmail("蛋蛋@qq.com");
		user.setMoney(3999);
		user.setDeptno(15);
		UserDAO dao = new UserDAO();
		boolean flag = dao.update(user);
		if(flag){
			System.out.println("成功");
		}else{
			System.out.println("失败");
		}
	}
	
	@Test//根据id删除一个User信息
	public void test5(){
		int id = 1001;//要删除记录的id
		UserDAO dao = new UserDAO();
		boolean flag = dao.deleteById(id);
		if(flag){
			System.out.println("成功");
		}else{
			System.out.println("失败");
		}
	}
}
对于保存方法的测试结果如下:

插入前id:0
User [id=0, name=LUCY1, password=321, money=2500, email=LUCY1@qq.com, deptno=12]
保存成功
插入后id:1030





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值