Mybatis(2)手写Mybatis核心流程

手写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, "王五");
	}
}

你可能感兴趣的:(#,SSM框架)