Performing batch insertion for a single row
Short answer to your question: No it's the same performance wise.



Full review:

My first concern with your code is the double for loop that uses the same looping variable i. This makes it harder to understand when you see an i inside the inner for loop.  

My other major concern is that the only difference between the code before the inner for loop and the code inside the inner loop is setting the variable max which I had no idea what it should be at first sight. Let's start by renaming that to transactionNumber. And since this is independent of the loop itself let's initialise that from the manager right above the loops instead:

int transactionNumber = manager.getTransNo();
for (int i = 0; i &lt; 1; i++) {
    String itemName = (String) jTable.getValueAt(i, 0);
    int itemQty = (int) jTable.getValueAt(i, 1);
    Double itemPrice = (Double) jTable.getValueAt(i, 2);
    Items items = new Items();
    items.setName(itemName);
    items.setPrice(itemPrice);
    items.setQty(itemQty);
    items.setTransactionNumber(transactionNumber);
    manager.saveItems(items);

    for (i = 1; i &lt; rows; i++) {
        String itemsName = (String) jTable.getValueAt(i, 0);
        int itemsQty = (int) jTable.getValueAt(i, 1);
        Double itemsPrice = (Double) jTable.getValueAt(i, 2);

        items.setName(itemsName);
        items.setPrice(itemsPrice);
        items.setQty(itemsQty);
        items.setTransactionNumber(transactionNumber);
        manager.saveItems(items);
    }
}


Now with a closer look there's a second difference. You only instantiate items once and overwrite that with the setters. I don't think this is a good idea. You should probably create a new items object each time with it's own name, price, quantity and save that independent of any previous values. This means we can just combine the 2 for loops into 1 like so:

int transactionNumber = manager.getTransNo();
for (int i = 0; i &lt; rows; i++) {
    String itemName = (String) jTable.getValueAt(i, 0);
    int itemQty = (int) jTable.getValueAt(i, 1);
    Double itemPrice = (Double) jTable.getValueAt(i, 2);
    Items items = new Items();
    items.setName(itemName);
    items.setPrice(itemPrice);
    items.setQty(itemQty);
    items.setTransactionNumber(transactionNumber);
    manager.saveItems(items);
}


If you now take a close look at what would happen if you only had 1 row you can see that the code inside the loop gets executed exactly 1 time with the i replaced by a 0. This is exactly the same code you have inside your if(rows == 1) block so you can remove that check and only keep the for loop.

Depending on how the Items are used in the rest of your code I also strongly suggest to remove the setters and pass any needed parameters with the constructor instead. This results in the following implementation of the entire method:

private void jButton1ActionPerformed (java.awt.event.ActionEvent evt){
    int transactionNumber = manager.getTransNo();
    for (int i = 0; i &lt; rows; i++) {
        String itemName = (String) jTable.getValueAt(i, 0);
        int itemQty = (int) jTable.getValueAt(i, 1);
        Double itemPrice = (Double) jTable.getValueAt(i, 2);
        Items items = new Items(transactionNumber, itemName, itemPrice, itemQty);
        manager.saveItems(items);
    }
}


The only improvement you should consider is to rename jTable to something more meaningful.