[由零开始] 一、手写Mybatis-从JDBC角度分析操作问题

[由零开始] 一、手写Mybatis-从JDBC角度分析操作问题

从JDBC角度分析问题

想要自定义持久层框架或者手写Mybatis 我们首先要做的就是分析jdbc 以及 分析jdbc存在的问题 怎么用更好的办法解决这些问题 这也是持久层框架存在的初衷 我们从源头出发去, 一步一步就很容易的理解其中的思想了

JDBC回顾

这段jdbc的代码很清楚 注释也已经写好了
我们先来看一下这段代码
这就是纯JDBC在代码中的硬编码查询

 
public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null;
try {
//加载数据库驱动  
	Class.forName("com.mysql.jdbc.Driver"); 
//通过驱动管理类获取数据库连接
	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);
// 设置参数
	preparedStatement.setString(1, "tom");
// 向数据库发出sql查询,返回结果集
	resultSet = preparedStatement.executeQuery();
// 遍历结果集
	while (resultSet.next()) {
	int id = resultSet.getInt("id");
	String username = resultSet.getString("username"); 
// 手动封装结果集User
	user.setId(id);
	user.setUsername(username); }
	System.out.println(user);
        }
    } catch (Exception e) {
	e.printStackTrace(); 
} finally {
// 释放资源
if (resultSet != null) {
	try {
		resultSet.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) {
		e.printStackTrace(); }
	}
 }

JDBC问题及分析

MrSoon

提出问题解决方案

问题一 数据库配置信息 可以写在配置文件中
问题二 利用连接池解决问题
问题三 同样可以写入配置文件中(尽量不要写在数据库配置信息同文件中)
问题四 利用反射、内省等方式去解决

解决完这些问题 一个大致的持久层框架的雏形就出来了
下一章 我们将解决这些问题 然后进行封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值