JBDC(Java Data Base Connectivity)是Java访问关系数据库的原始API,Mybatis框架也是基于JDBC之上对其封装的数据库操作工具(执行SQL)。原始API开发的程序代码质量低,不利于扩展、维护,并且资源利用率也很低(频繁连接和断开连接),需要硬编码来处理结果集(关系数据模型到Java数据模型)。实际工作中,极少直接使用JDBC开发。
JDBC连接Mysql数据库例子:
0.新建mysql test数据库中数据表role(id,role_name, note)
1.新建Java工程,导入Mysql的JDBC驱动(下载)。windows系统下载zip版本,解压后得到mysql-connector-java-5.1.41-bin.jar
2.新建Role类
package com.lz.jdbc;
public class Role {
private Integer id;
private String roleName;
private String note;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
@Override
public String toString() {
return "Role [id=" + id + ", roleName=" + roleName + ", note=" + note + "]";
}
}
新建JdbcUtil类
package com.lz.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcUtil {
private static final String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/";
private static Connection connection = null;
private static Statement statement = null;
public static void connect(String database, String user, String password) {
url += database;
try {
Class.forName(driver);
connection = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Role select(String sql) {
Role role = new Role();
ResultSet resultSet = null;
try {
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
role.setId(resultSet.getInt(1));
role.setRoleName(resultSet.getString(2));
role.setNote(resultSet.getString(3));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (resultSet != null && !resultSet.isClosed()) {
resultSet.close();
}
if (connection != null && !connection.isClosed()) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return role;
}
public static void close() {
try {
if (statement != null && !statement.isClosed()) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
新建MainApp类
package com.lz.jdbc;
public class MainApp {
public static void main(String[] args) {
String sql = "SELECT * FROM ROLE WHERE ID = 10001";
JdbcUtil.connect("test", "root", "luzhen");
Role role = JdbcUtil.select(sql);
System.out.println(role);
JdbcUtil.close();
}
}
工程目录:
运行程序,得出结果