DAO层
DAO数据访问对象(Data Access Object)
DAO只实现对数据库的访问操作
对同一张表的所有操作封装在XxxDaoImpl对象中
根据增删改查的不同功能实现具体的方法(insert,update,delete,select,selectAll)
1.数据库的访问操作从获取connection连接开始,执行sql语句,到处理结果这几步都属于访问操作.
2.让用户名输入用户密码都属于业务逻辑代码。
PersonDaoImpl类:
package com.qf.person;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class PersonDaoImpl {
//dao层只做数据库访问操作,不做数据库逻辑判断
//新增
//dao层其实就是实现对数据库一张表的操作的复用,每个用户对一张表的操作都可以通过这个类完成
public int insert(Person1 person){
Connection connection = null;
PreparedStatement preparedStatement = null;
String sql = "insert into person(name,age,borndate,email,address)values(?,?,?,?,?);";
try {
connection = DBUtils.getConnection();
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1,person.getName());
preparedStatement.setInt(2,person.getAge());
preparedStatement.setDate(3,null);
preparedStatement.setString(4,person.getEmail());
preparedStatement.setString(5,person.getAddress());
int result = preparedStatement.executeUpdate();
return result;
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtils.closeAll(connection,preparedStatement,null);
}
return 0;
}
//修改
public int update(Person1 person){
Connection connection =null;
PreparedStatement preparedStatement = null;
String sql ="update person set name=?,age=?,borndate=?,email=?,address=?where id=?";
try {
preparedStatement =connection.prepareStatement(sql);
preparedStatement.setString(1,person.getName());
preparedStatement.setInt(2,person.getAge());
preparedStatement.setDate(3,null);
preparedStatement.setString(4,person.getEmail());
preparedStatement.setString(5,person.getAddress());
preparedStatement.setInt(6,person.getId());
int result = preparedStatement.executeUpdate();
return result;
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtils.closeAll(connection,preparedStatement,null);
}
return 0;
}