CRUD Using JDBC PreparedStatement
1 Use IDEA to create a maven project
1.1 Open idea, select Create New Project at Home
1.2 choose to create a maven project, set the SDK, check Create from archetype, click next next
1.3 Setting the project path, project name, package name, etc.
1.4 Click file-> settings, set maven home path
1.5 Click file-> settings, set the Java Compiler version
1.6 Click file-> Project Structures, set jdk version
2 introduces dependencies mysql
2.1 add mysql depend in pom.xml
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>runtime</scope>
</dependency>
</dependencies>
2.2 maven loaded package
Click on the top left corner of Reimport All Maven Projects maven loaded pox.xml in a jar, then Dependencies will appear dependent jar package
3 Prepare data
CREATE TABLE `employee_table` (
`employee_id` int(11) NOT NULL auto_increment,
`employee_name` varchar(60) NOT NULL,
`email` varchar(45) NOT NULL,
`salary` double default NULL,
`date_of_joining` datetime default NULL,
`bonus` decimal(10,0) default NULL,
PRIMARY KEY (`employee_id`)
) ;
4 writing code
4.1 Create the following package name
com.demos, com.demos.util, com.demos.model, com.demos.dao, com.demos.dao.impl
4.2 Creating DBUtil Tools
package com.demos.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static final String DB_DRIVER_CLASS="com.mysql.jdbc.Driver";
private static final String DB_USERNAME="root";
private static final String DB_PASSWORD="123456";
private static final String DB_URL ="jdbc:mysql://localhost:3306/demos";
private static Connection connection = null;
static{
try {
// 加载数据库驱动
Class.forName(DB_DRIVER_CLASS);
// 获取数据库连接
connection = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
return connection;
}
}
4.3 Creating Employee entity class
package com.demos.model;
import java.math.BigDecimal;
import java.util.Date;
public class Employee {
private int employee_id;
private String employeeName;
private String email;
private Double salary;
private Date doj;
private BigDecimal bonus;
public int getEmployee_id() {
return employee_id;
}
public void setEmployee_id(int employee_id) {
this.employee_id = employee_id;
}
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String employeeName) {
this.employeeName = employeeName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Date getDoj() {
return doj;
}
public void setDoj(Date doj) {
this.doj = doj;
}
public BigDecimal getBonus() {
return bonus;
}
public void setBonus(BigDecimal bonus) {
this.bonus = bonus;
}
@Override
public String toString() {
return "Employee [employee_id=" + employee_id + ", employeeName=" + employeeName + ", email=" + email
+ ", salary=" + salary + ", doj=" + doj + ", bonus=" + bonus + "]";
}
}
4.4 interface to create EmployeeDAO
package com.demos.dao;
import java.util.List;
import com.demos.model.Employee;
public interface EmployeeDAO {
public abstract void createEmployee(Employee employee);
public abstract Employee getEmployeeById(Integer employeeId);
public abstract void updateEmployeeEmailById(String newEmail,Integer employeeId);
public abstract void deleteEmployeeById(Integer employeeId);
public abstract List<Employee> getAllEmployeesInfo();
}
4.5 Creating EmployeeDAOImpl achieve EmployeeDAO Interface
package com.demos.dao.impl;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.demos.dao.EmployeeDAO;
import com.demos.model.Employee;
import com.demos.util.DBUtil;
import com.demos.dao.EmployeeDAO;
import com.demos.model.Employee;
import com.demos.util.DBUtil;
public class EmployeeDAOImpl implements EmployeeDAO {
@Override
public void createEmployee(Employee employee) {
String SQL = "INSERT INTO employee_table(employee_name,email,salary,date_of_joining,bonus)VALUES(?,?,?,?,?)";
try(Connection connection = DBUtil.getConnection(); PreparedStatement ps = connection.prepareStatement(SQL)) {
ps.setString(1, employee.getEmployeeName());
ps.setString(2, employee.getEmail());
ps.setDouble(3, employee.getSalary());
ps.setDate(4, new Date(employee.getDoj().getTime()));
ps.setBigDecimal(5, employee.getBonus());
int executeUpdate = ps.executeUpdate();
if(executeUpdate ==1){
System.out.println("Employee is crated..");
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public Employee getEmployeeById(Integer employeeId) {
Employee employee = null;
String SQL = "SELECT *FROM employee_table WHERE employee_id=?";
try(Connection connection = DBUtil.getConnection();PreparedStatement ps = connection.prepareStatement(SQL)) {
ps.setInt(1, employeeId);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int empId = rs.getInt("employee_id");
String eName = rs.getString("employee_name");
String email = rs.getString("email");
Double salary = rs.getDouble("salary");
BigDecimal bonus = rs.getBigDecimal("bonus");
Date date = rs.getDate("date_of_joining");
employee = new Employee();
employee.setEmployeeName(eName);
employee.setBonus(bonus);
employee.setDoj(date);
employee.setEmail(email);
employee.setEmployee_id(empId);
employee.setSalary(salary);
}
} catch (Exception e) {
e.printStackTrace();
}
return employee;
}
@Override
public void updateEmployeeEmailById(String newEmail, Integer employeeId) {
String SQL = "UPDATE employee_table set email=? WHERE employee_id=?;";
try(Connection connection = DBUtil.getConnection();PreparedStatement ps = connection.prepareStatement(SQL)) {
ps.setString(1, newEmail);
ps.setInt(2,employeeId);
int executeUpdate = ps.executeUpdate();
if(executeUpdate ==1){
System.out.println("Employee email is updated..");
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void deleteEmployeeById(Integer employeeId) {
String SQL = "DELETE FROM employee_table WHERE employee_id=?;";
try(Connection connection = DBUtil.getConnection();PreparedStatement ps = connection.prepareStatement(SQL)) {
ps.setInt(1,employeeId);
int executeUpdate = ps.executeUpdate();
if(executeUpdate ==1){
System.out.println("Employee is deleted with ID::"+employeeId);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public List<Employee> getAllEmployeesInfo() {
List<Employee> empList = new ArrayList<>();
String SQL = "SELECT *FROM employee_table";
try(Connection connection = DBUtil.getConnection();PreparedStatement ps = connection.prepareStatement(SQL)) {
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int empId = rs.getInt("employee_id");
String eName = rs.getString("employee_name");
String email = rs.getString("email");
Double salary = rs.getDouble("salary");
BigDecimal bonus = rs.getBigDecimal("bonus");
Date date = rs.getDate("date_of_joining");
Employee employee = new Employee();
employee.setEmployeeName(eName);
employee.setBonus(bonus);
employee.setDoj(date);
employee.setEmail(email);
employee.setEmployee_id(empId);
employee.setSalary(salary);
empList.add(employee);
}
} catch (Exception e) {
e.printStackTrace();
}
return empList;
}
}
4.6 Creating JDBCTest test the above code
package com.demos;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.demos.dao.EmployeeDAO;
import com.demos.dao.impl.EmployeeDAOImpl;
import com.demos.model.Employee;
public class JDBCTest {
public static void main(String[] args) {
try {
EmployeeDAO employeeDAO = new EmployeeDAOImpl();
Employee employee = getEmployee();
employeeDAO.createEmployee(employee);
//getEmployeeById(employeeDAO);
//employeeDAO.updateEmployeeEmailById("[email protected]", 4);
//employeeDAO.deleteEmployeeById(6);
//getAllEmployeesInfo(employeeDAO);
}
catch (Exception ex) {
String msg=ex.toString();
String error=ex.toString();
}
}
private static void getAllEmployeesInfo(EmployeeDAO employeeDAO) {
List<Employee> empList = employeeDAO.getAllEmployeesInfo();
for (Employee employee : empList) {
System.out.println(employee);
}
}
private static void getEmployeeById(EmployeeDAO employeeDAO) {
Employee employee2 = employeeDAO.getEmployeeById(4);
if (employee2 != null) {
System.out.println(employee2);
} else {
System.out.println("Employee does not exist..");
}
}
private static Employee getEmployee() {
Employee employee = new Employee();
employee.setBonus(new BigDecimal(290));
employee.setDoj(new Date());
employee.setEmployeeName("John");
employee.setEmail("[email protected]");
employee.setSalary(90000.00);
return employee;
}
}
5 test procedure
In the code block JDBCTest right click and select Debug 'JDBCTest.main ()', starts the debugger