Java jdbc 连接数据库、通用增删改查、事务回滚

时间:2020-05-23
本文章向大家介绍Java jdbc 连接数据库、通用增删改查、事务回滚,主要包括Java jdbc 连接数据库、通用增删改查、事务回滚使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.先下载mysql-connector-java-5.1.40.jar包;

2.写代码;

获取数据库连接、通用查询和同意增删改代码;

    public static Connection getConnection() {
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("数据库驱动加载成功");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/maxinhai?characterEncoding=UTF-8",
                    "maxinhai", "maxinhai");
            System.out.println("数据库连接成功");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

    /**
     * 执行增加、删除、修改 sql操作
     * 
     * @auther maxinhai
     * @param con 连接对象
     * @param sql 增加、删除、修改sql语句
     * @param params 条件参数
     * @return 查询结果
     */
    public static int executeUpdate(Connection con, String sql, List<Object> params) {
        int num = 0;
        PreparedStatement ps = null;
        try {
            // 预处理对象
            System.out.println(sql);
            ps = con.prepareStatement(sql);
            // 填充参数
            if (params.size() > 0) {
                for (int i = 0; i < params.size(); i++) {
                    ps.setObject(i + 1, params.get(i));
                }
            }
            // 执行sql
            num = ps.executeUpdate();
            System.out.println("影响了" + num + "条信息");
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (ps != null)
                    ps.close();
                if (con != null)
                    con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return num;
    }

    /**
     * 执行查询语句
     * 
     * @auther maxinhai
     * @param con 连接对象
     * @param querySql 查询语句
     * @param params 查询条件参数
     * @return 查询结果
     */
    public static List<Map<String, Object>> executeQuery(Connection con, String querySql, List<Object> params) {
        List<Map<String, Object>> table = null;
        PreparedStatement ps = null;
        ResultSet queryResult = null;
        try {
            // 获取预处理对象
            ps = con.prepareStatement(querySql);
            // 填充参数
            if (params != null && params.size() > 0) {
                for (int i = 0; i < params.size(); i++) {
                    ps.setObject(i + 1, params.get(i));
                }
            }
            // 执行查询
            queryResult = ps.executeQuery();
            // 获取键名
            ResultSetMetaData md = queryResult.getMetaData();
            // 获取行的数量
            int columnCount = md.getColumnCount();
            table = new ArrayList();
            while (queryResult.next()) {
                // 链表保证顺序
                Map<String, Object> rowData = new LinkedHashMap<>();
                for (int i = 1; i <= columnCount; i++) {
                    // 获取键名及值
                    rowData.put(md.getColumnName(i), queryResult.getObject(i));
                }
                table.add(rowData);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (ps != null)
                    ps.close();
                if (con != null)
                    con.close();
                if (queryResult != null)
                    queryResult.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return table;
    }

原文地址:https://www.cnblogs.com/mxh-java/p/12943876.html