Java 7引入了try-with-resources,使手写JDBC代码简洁了许多。下面以mysql为例,演示一段代码。环境:java 1.7.0_17,mysql 5.5.29,mysql connector/j 5.1.24(5.1.21以上才支持jdbc 4.1)。
代码依然比较简陋,不如框架完善。但是作为演示,对初学者的压力会小很多。
CREATE TABLE account (
name VARCHAR(64),
id INT PRIMARY KEY NOT NULL,
address TEXT,
balance DECIMAL(8,2)
);
public class Account {
private int id;
private String name;
private String address;
private double balance;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public static Connection getConnection() throws SQLException {
String url = "jdbc:mysql://localhost/test";
String user = "root";
String password = "password";
return DriverManager.getConnection(url, user, password);
}
}
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class AccountDao {
public List<Account> getAccounts() throws SQLException {
List<Account> list = new ArrayList<>();
try(Connection c = ConnectionFactory.getConnection()) {
try (Statement s = c.createStatement()) {
ResultSet rs = s.executeQuery("select * from account");
while (rs.next()) {
Account a = new Account();
a.setId(rs.getInt("id"));
a.setName(rs.getString("name"));
a.setAddress(rs.getString("address"));
a.setBalance(rs.getDouble("balance"));
list.add(a);
}
}
}
return list;
}
}
代码依然比较简陋,不如框架完善。但是作为演示,对初学者的压力会小很多。