手写mybatis1.0版本
目的是从JDBC原生代码过度到properties配置文件的阶段
db.properties文件
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql:XXX
db.username=XXX
db.password=XXX
db.sql=select * from user where username = ?
public void test() {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet rs = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 通过驱动管理类获取数据库链接connection = DriverManager
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8",
"root", "root");
// 定义sql语句 ?表示占位符
String sql = "select * from user where username = ?";
// 获取预处理 statement
preparedStatement = connection.prepareStatement(sql);
// 设置参数,第一个参数为 sql 语句中参数的序号(从 1 开始),第二个参数为设置的
preparedStatement.setString(1, "王五");
// 向数据库发出 sql 执行查询,查询出结果集
rs = preparedStatement.executeQuery();
// 遍历查询结果集
while (rs.next()) {
System.out.println(rs.getString("id") + " " + rs.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
}
}
}
/**
* 加载的是properties
*
* @return
*/
public Properties loadProperties() {
Properties properties = new Properties();
try {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("db.properties");
properties.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
public void executeJDBC(Properties properties, Object param) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet rs = null;
try {
// 加载数据库驱动
Class.forName(properties.getProperty("db.driver"));
// 通过驱动管理类获取数据库链接connection = DriverManager
connection = DriverManager.getConnection(properties.getProperty("db.url"),
properties.getProperty("db.username"), properties.getProperty("db.password"));
// 定义sql语句 ?表示占位符
String sql = properties.getProperty("db.sql");
// 获取预处理 statement
preparedStatement = connection.prepareStatement(sql);
// 设置参数,第一个参数为 sql 语句中参数的序号(从 1 开始),第二个参数为设置的
preparedStatement.setString(1, "王五");
// 向数据库发出 sql 执行查询,查询出结果集
rs = preparedStatement.executeQuery();
// 遍历查询结果集
while (rs.next()) {
System.out.println(rs.getString("id") + " " + rs.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
}
}
}
@Test
public void test2() {
Properties properties = loadProperties();
executeJDBC(properties, "王五");
}
}