jdbc篇第7課:封裝增刪改查
阿新 • • 發佈:2018-11-28
這節課我們來封裝增刪改查
實現:
package com.tool; import com.bean.Employee; import java.sql.*; import java.util.*; public class EmployeeMapper { Connection connection; public EmployeeMapper(Connection connection) {this.connection = connection; } public void insert(Employee employee) throws SQLException { String sql = "insert into tbl_employee (id,last_name,email,gender,d_id) values (?,?,?,?,?)";PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1,employee.getId()); preparedStatement.setString(2,employee.getLastName());preparedStatement.setString(3,employee.getEmail()); preparedStatement.setString(4,employee.getGender()); preparedStatement.setInt(5,employee.getdId()); preparedStatement.executeUpdate(); } public void delete(int id) throws SQLException { String sql = "delete from tbl_employee where id = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1,id); preparedStatement.executeUpdate(); } public void update(Employee employee) throws SQLException { String sql = "update tbl_employee set last_name = ?,email = ?,gender = ?, d_id = ? where id = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,employee.getLastName()); preparedStatement.setString(2,employee.getEmail()); preparedStatement.setString(3,employee.getGender()); preparedStatement.setInt(4,employee.getdId()); preparedStatement.setInt(5,employee.getId()); preparedStatement.executeUpdate(); } public Employee selectById(int id) throws SQLException { Employee employee = null; String sql = "select * from tbl_employee where id = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1,id); ResultSet resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { employee = new Employee(); employee.setId(resultSet.getInt(1)); employee.setLastName(resultSet.getString(2)); employee.setEmail(resultSet.getString(3)); employee.setGender(resultSet.getString(4)); employee.setdId(resultSet.getInt(5)); } return employee; } /** * * @param conditionMap 鍵是列名,值是要匹配的值 * @return */ public List<Employee> selectByExample(Map<String,String> conditionMap) throws SQLException { List<Employee> employeeList = new ArrayList<Employee>(); int size = conditionMap.keySet().size(); String[] keyArr = new String[size]; String[] valueArr = new String[size]; conditionMap.keySet().toArray(keyArr); conditionMap.values().toArray(valueArr); String sql = "select * from tbl_employee where "; for (int i = 0; i < size; i++) { sql += keyArr[i] + "=" + valueArr[i] + " and "; } //末尾多了一個and,去掉 sql = sql.substring(0,sql.lastIndexOf("and") - 1); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { Employee employee = new Employee(); employee = new Employee(); employee.setId(resultSet.getInt(1)); employee.setLastName(resultSet.getString(2)); employee.setEmail(resultSet.getString(3)); employee.setGender(resultSet.getString(4)); employee.setdId(resultSet.getInt(5)); employeeList.add(employee); } return employeeList; } }
測試程式碼:
public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException { Connection conn = Dbc.getConnection("src/com/resource/dbc.properties"); EmployeeMapper employeeMapper = new EmployeeMapper(conn); //測試selectById() Employee employee = employeeMapper.selectById(2); System.out.println(employee.toString()); //測試insert employee = new Employee(100,"wangdachui","[email protected]","1",1003); employeeMapper.insert(employee); //測試delete employeeMapper.delete(12); //測試update employee = new Employee(13,"mayun","[email protected]","1",1004); employeeMapper.update(employee);
//測試selectByExample Map<String,String> map = new HashMap<String, String>(); map.put("gender","1"); map.put("d_id","1001"); List<Employee> employees = employeeMapper.selectByExample(map); for (Employee employee1 : employees) { System.out.println(employee1.toString()); } }
原來的資料:
執行後:
可以看到id為12的行已經被刪除了
Id為100的被插入了
第13行資料也被更改了
結果:
Employee{id=2, lastName='bb', email='[email protected]', gender='0', dId=1003}
Employee{id=1, lastName='xiaoye', email='[email protected]', gender='1', dId=1001}
Employee{id=4, lastName='dd', email='[email protected]', gender='1', dId=1001}
第一條是selectById的結果
後兩行是selectByExample的結果