jdbc-修改 水果库存系统的 BaseDao 的 executeUpdate 方法支持返回自增列

    //抽取执行更新方法
    //执行更新,返回影响行数
    //如果是执行 insert,那么可以尝试返回自增列的值
    protected int executeUpdate(String sql, Object... params) {

        boolean insertFlag = sql.trim().toUpperCase().startsWith("INSERT");

        PreparedStatement psmt = null;
        Connection conn = null;
        try {
            conn = getConn();
            psmt = insertFlag ? conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS) : conn.prepareStatement(sql);

            setParams(psmt, params);

            int count = psmt.executeUpdate();

            if (insertFlag) {
                ResultSet rs = psmt.getGeneratedKeys();
                if (rs.next()) {
                    Long id = rs.getLong(1);
                    count = id.intValue();
                }
            }

            return count;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            close(conn, psmt, null);
        }
    }

你可能感兴趣的:(#,JDBC,java,数据库,开发语言,反射,jdbc)