基于连接数据库以后的增、删、该、查。有考虑不足的地方,希望不吝赐教(^__^)
package deom;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import util.DBUtil;
public class PersonDAO {
/**
* 查询person表
* @return 返回一个List<Person>集合
*/
public List<Person> Query() {
List<Person> list = new ArrayList<Person>();
Connection connection = DBUtil.getConnection();
PreparedStatement pst = null;
ResultSet resultSet = null;
try {
String sql = "SELECT * FROM person";
pst = connection.prepareStatement(sql);
resultSet = pst.executeQuery();
while (resultSet.next()) {
Person p = new Person();
p.setId(resultSet.getInt("id"));
p.setName(resultSet.getString("name"));
p.setSex(resultSet.getInt("sex"));
p.setAge(resultSet.getInt("age"));
p.setMoblie(resultSet.getString("mobile"));
p.setAddress(resultSet.getString("address"));
list.add(p);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
}
DBUtil.close(resultSet, pst, connection);
return null;
}
/**
*
* 根据输入的List<Map<String, Object>> params来进行数据查询
* @param params params是一个或多个Map集的集合。
* @return 返回一个List<Person>的集合
*/
public List<Person> Query(List<Map<String, Object>> params) {
List<Person> list = new ArrayList<Person>();
Connection connection = DBUtil.getConnection();
PreparedStatement pst = null;
ResultSet resultSet = null;
try {
StringBuilder sb = new StringBuilder();
sb.append("SELECT * FROM person WHERE 1=1");
if (params != null && params.size()>0) {
for(int i = 0; i<params.size();i++) {
Map<String, Object> map = params.get(i);
sb.append(" AND "+ map.get("name")+" "+map.get("rela")+" "+map.get("value"));
}
}
System.out.println(sb);
pst = connection.prepareStatement(sb.toString());
resultSet = pst.executeQuery();
while (resultSet.next()) {
Person p = new Person();
p.setId(resultSet.getInt("id"));
p.setName(resultSet.getString("name"));
p.setSex(resultSet.getInt("sex"));
p.setAge(resultSet.getInt("age"));
p.setMoblie(resultSet.getString("mobile"));
p.setAddress(resultSet.getString("address"));
list.add(p);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
}
DBUtil.close(resultSet, pst, connection);
return null;
}
/**
* 查询单个person对象是否存在
* @param p 查询对象
* @return 返回布尔值 true-存在,false-不存在
*/
public boolean searchPerson(Person p) {
Connection connection = DBUtil.getConnection();
PreparedStatement pst = null;
ResultSet resultSet = null;
try {
pst = connection.prepareStatement("SELECT * FROM person WHERE name=? AND age=?");
pst.setString(1,p.getName());
pst.setInt(2,p.getAge());
resultSet = pst.executeQuery();
if (resultSet.next()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
DBUtil.close(resultSet, pst, connection);
return false;
}
/**
* 添加一个person
* @param p 添加的对象
* @return true-添加成功,false-添加失败
*/
public boolean add(Person p) {
Connection connection = DBUtil.getConnection();
PreparedStatement pst = null;
try {
String sql = "INSERT INTO person(name,sex,age,mobile,address) VALUES(?,?,?,?,?)";
pst = connection.prepareStatement(sql);
pst.setString(1, p.getName());
pst.setInt(2, p.getSex());
pst.setInt(3, p.getAge());
pst.setString(4, p.getMoblie());
pst.setString(5, p.getAddress());
int i = pst.executeUpdate();
if (i>0) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
DBUtil.close(null, pst, connection);
return false;
}
/**
* 修改某个person对象
* @param p 表示更新后的person对象的信息,其中id不可修改
* @return true-修改成功,false-修改失败
*/
public boolean update(Person p) {
Connection connection = DBUtil.getConnection();
PreparedStatement pst = null;
try {
String sql = "UPDATE person SET name = ? ,sex = ? ,age = ? ,mobile = ? ,address = ? WHERE id = ?";
pst = connection.prepareStatement(sql);
pst.setString(1, p.getName());
pst.setInt(2, p.getSex());
pst.setInt(3, p.getAge());
pst.setString(4, p.getMoblie());
pst.setString(5, p.getAddress());
pst.setInt(6, p.getId());
int i = pst.executeUpdate();
if (i>0) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
DBUtil.close(null, pst, connection);
return false;
}
/***
*
* @param id 根据 id来删除person表中的一个元组
*/
public boolean delete(Integer id) {
Connection connection = DBUtil.getConnection();
PreparedStatement preparedStatement = null;
try {
String sql = "DELETE FROM person WHERE id = ?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
preparedStatement.execute();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
DBUtil.close(null, preparedStatement, connection);
return false;
}
}