闲来无事写个员工信息系统。
连接的My SQL数据库,其中需要导一些jar包,大家自行百度maven repository下载吧~
接下来上代码,有问题可以评论区讨论:
test(测试)类:
package empmanager.test;
import empmanager.dao.EmpDao;
import empmanager.dao.impl.EmpDaoImpl;
import empmanager.model.Emp;
import org.junit.Test;
import java.util.Date;
import java.util.List;
public class TestEmpDao {
private EmpDao empDao = new EmpDaoImpl();
@Test
public void testFindAll(){
List<Emp> list = empDao.findAll();
System.out.println(list);
}
@Test
public void testFindByID(){
Emp Eid = empDao.findByID(1);
System.out.println(Eid);
}
@Test
public void testAddEmp(){
Emp emp = new Emp(15,"Vic",1003,7,new Date(),5000.0,2000.0,10);
boolean b = empDao.addEmp(emp);
System.out.println(b);
}
@Test
public void testUpdateEmp(){
boolean bool = empDao.updateEmp(1,13000.0);
System.out.println(bool);
}
@Test
public void testDeleteEmp(){
boolean b = empDao.deleteEmp(2);
System.out.println(b);
}
}
DruidUtil(工具)类:我用的是druid连接池
package empmanager.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DruidUtil {
private static DataSource dataSource;
/**
* 静态代码块 加载配置文件
*/
static {
Properties props = new Properties();
try {
props.load(new FileInputStream("src/druid/druid.properties"));
// 获取连接池
dataSource = DruidDataSourceFactory.createDataSource(props);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取连接
* @return
* @throws SQLException
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return conn;
}
public static PreparedStatement getPreparedStatement(Connection conn,String sql){
PreparedStatement pstat = null;
try {
pstat = conn.prepareStatement(sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return pstat;
}
/**
* 给sql的占位符赋值
* @param pstat
* @param params
*/
public static void bindParam(PreparedStatement pstat, Object... params){
//可变参数本质就是一个数组
//【1001,张三,5000.0】数组中的下标是0,1,2,但问号的顺序是1,2,3
//params[0],params[1],params[2]
for (int i = 1; i <= params.length; i++) {
try {
pstat.setObject(i, params[i-1]);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
/**
* 释放资源
* @param ps
* @param conn
*/
public static void close(PreparedStatement ps, Connection conn) {
close(null,ps,conn);
}
/**
* 释放资源
* @param ps
* @param conn
*/
public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
model(员工信息)类:
package empmanager.model;
import java.io.Serializable;
import java.util.Date;
//定义一个Emp类并实现序列化接口
public class Emp implements Serializable {
private static final long serialVersionUID = 2661275080534500356L;
//有null值,所以用引用类型
private Integer id;
private String ename;
private Integer job_id;
private Integer mgr;
private Date joindate;
private Double salary;
private Double bonus;
private Integer dept_id;
public Emp() {
}
public Emp(Integer id,String ename, Integer job_id, Integer mgr, Date joindate, Double salary, Double bonus, Integer dept_id) {
this.ename = ename;
this.id = id;
this.job_id = job_id;
this.mgr = mgr;
this.joindate = joindate;
this.salary = salary;
this.bonus = bonus;
this.dept_id = dept_id;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getJob_id() {
return job_id;
}
public void setJob_id(Integer job_id) {
this.job_id = job_id;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Date getJoindate() {
return joindate;
}
public void setJoindate(Date joindate) {
this.joindate = joindate;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Double getBonus() {
return bonus;
}
public void setBonus(Double bonus) {
this.bonus = bonus;
}
public Integer getDept_id() {
return dept_id;
}
public void setDept_id(Integer dept_id) {
this.dept_id = dept_id;
}
@Override
public String toString() {
return "Emp{" +
"id=" + id +
", job_id=" + job_id +
", mgr=" + mgr +
", joindate=" + joindate +
", salary=" + salary +
", bonus=" + bonus +
", dept_id=" + dept_id +
'}';
}
}
impl包下有个EmpDao接口:
package empmanager.dao;
import empmanager.model.Emp;
import java.util.List;
public interface EmpDao {
//无参的查询方法
List<Emp> findAll();
Emp findByID(Integer id);
boolean addEmp(Emp emp);
boolean updateEmp(Integer id,Double salary);
boolean deleteEmp(Integer id);
}
以及EmpDaoImpl类:
package empmanager.dao.impl;
import empmanager.dao.EmpDao;
import empmanager.model.Emp;
import empmanager.util.DruidUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class EmpDaoImpl implements EmpDao {
@Override
public List<Emp> findAll() {
ArrayList<Emp> list = new ArrayList<>();
ResultSet rs = null;
//获取连接
Connection conn = DruidUtil.getConnection();
PreparedStatement pstat = DruidUtil.getPreparedStatement(conn, "select * from emp");
try {
rs = pstat.executeQuery();
while(rs.next()){
Emp emp = new Emp();
emp.setId(rs.getInt("id"));
emp.setEname(rs.getString("ename"));
emp.setJob_id(rs.getInt("job_id"));
emp.setJoindate(rs.getDate("joindate"));
emp.setMgr(rs.getInt("mgr"));
emp.setSalary(rs.getDouble("salary"));
emp.setBonus(rs.getDouble("bonus"));
emp.setDept_id(rs.getInt("dept_id"));
// 将对象装入集合
list.add(emp);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally{
DruidUtil.close(rs, pstat, conn);
}
return list;
}
@Override
public Emp findByID(Integer id) {
Emp emp = new Emp();
ResultSet rs = null;
Connection conn = DruidUtil.getConnection();
//预编译的sql执行对象;
PreparedStatement pstat = DruidUtil.getPreparedStatement(conn, "select * from emp where id=?");
// pstat.setInt(1,id);
DruidUtil.bindParam(pstat, id);
//执行查询
try {
rs = pstat.executeQuery();
if(rs.next()){
emp.setId(rs.getInt("id"));
emp.setEname(rs.getString("ename"));
emp.setJob_id(rs.getInt("job_id"));
emp.setJoindate(rs.getDate("joindate"));
emp.setMgr(rs.getInt("mgr"));
emp.setSalary(rs.getDouble("salary"));
emp.setBonus(rs.getDouble("bonus"));
emp.setDept_id(rs.getInt("dept_id"));
}
//封装对象
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return emp;
}
@Override
public boolean addEmp(Emp emp) {
Connection conn = DruidUtil.getConnection();
String sql = "insert into emp values(?,?,?,?,?,?,?,?)";
PreparedStatement pstat = DruidUtil.getPreparedStatement(conn,sql);
DruidUtil.bindParam(pstat, emp.getId(),emp.getEname(),
emp.getJob_id(),emp.getMgr(),emp.getJoindate(),emp.getSalary(), emp.getBonus(),emp.getDept_id());
try {
int i = pstat.executeUpdate();
if(i>0){
return true;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally{
DruidUtil.close(null,pstat,conn);
}
return false;
}
@Override
public boolean updateEmp(Integer id, Double salary) {
Connection conn = DruidUtil.getConnection();
String sql = "update emp set salary = ? where id = ?";
PreparedStatement pstat = DruidUtil.getPreparedStatement(conn, sql);
DruidUtil.bindParam(pstat,salary,id);
try {
int i = pstat.executeUpdate();
if (i>0){
return true;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return false;
}
@Override
public boolean deleteEmp(Integer id) {
Connection conn = DruidUtil.getConnection();
String sql = "delete from emp where id = ?";
PreparedStatement pstat = DruidUtil.getPreparedStatement(conn, sql);
DruidUtil.bindParam(pstat,id);
try {
int i = pstat.executeUpdate();
if(i>0){
return true;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return false;
}
}
创建数据库如下,我用的可视化工具是navicat:
利用数据库的员工信息管理系统就做好啦!
我在其中实现了增删改三种方法,只是很基本的功能,代码也不算简洁,有更好的建议可以在评论区告诉我~