一、本节重点:
1、MySQL数据库
2、接口重写实现关键功能(rowMapper)
二、详述具体流程:
1、全部代码
package wrap;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
interface IRowMapper{
void rowMapper(ResultSet resultSet);
}
public class Test2 {
public static void select(String sql,IRowMapper rowMapper) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet= null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");
statement = connection.createStatement();
resultSet= statement.executeQuery(sql);
rowMapper.rowMapper(resultSet);
} catch (Exception e) {
e.printStackTrace();
}finally {
if (resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement!=null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
class RowMapper implements IRowMapper{
@Override
public void rowMapper(ResultSet resultSet) {
try {
while(resultSet.next()) {
String id = resultSet.getString("id");
String address = resultSet.getString("address");
System.out.println(id);
System.out.println(address);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
String sql = "select * from student";
IRowMapper rowMapper = new RowMapper();
select(sql,rowMapper);
}
}
1、重写接口里的方法:具体作用是可以使在数据库中的数据显示在控制台中,这个方法本质上实则是将返回的ResultSet类型的数据进行使用,在本代码中是将其遍历;
2、先从主函数开始:创建MySQL数据库中的语句
String sql = "select * from student";
这句话的作用是将MySQLstudent表中的全部的数据罗列出来
3、创建一个RowMapper对象,与sql一起输入到select方法中:其中可以看出本次RowMapper对象是上转型;
4、分析方法的执行:
一、加载驱动:
Class.forName("com.mysql.jdbc.Driver");
需要进行引包操作,包名为mysql-connector-java-5.1.9.jar,在包中找到com.mysql.jdbc.Drive
注:此时会自动抛出一个检查时异常 :使用try catch 去除
二、与MySQL获取连接:
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");
此时连接自己主机的数据库
三、创建语句:
statement = connection.createStatement();
resultSet= statement.executeQuery(sql);
此时将创建语句,然后执行sql中的语句->将数据库中数据返回一个ResultSet的实现类,这个变量可以传到rowMapper方法中进行遍历
四、遍历:
try {
while(resultSet.next()) {
String id = resultSet.getString("id");
String address = resultSet.getString("address");
System.out.println(id);
System.out.println(address);
}
} catch (Exception e) {
e.printStackTrace();
}
注:ResultSet中的next方法可以将“类指针”前移,并检查是否有值;
ResultSet中的getString()方法需要输入在数据库中定义的时"属性",返回的就是当前“指针”对应的该属性的值
五、释放内存
finally {
if (resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement!=null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
谨记:此处释放内存要求从后向前释放内存,并且要分开写;
5、方法执行结束,此时主函数也执行结束,程序结束