JDBC---简单的增、删、改、查

基于连接数据库以后的增、删、该、查。有考虑不足的地方,希望不吝赐教(^__^)

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值