Mybatis——手写Mybatis第一版

前言

上一篇对Mybatis框架简单了解了一下,这一篇开始将对Mybatis进行一个深入的学习,当然,直接上源码我估计看着看着就不想看了,就算看了过后估计没多久也忘了(我的忘性比较大),所以说我们一步一步来,先简单的开始最后在阅读源码应该会理解更好一点。

正文

JDBC

开始手写Mybatis之前我们先来看一段JDBC代码(删除了一些无关的代码)

// 加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 获得数据库连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
// 定义sql语句
String sql = "select * from user where username = ?";
// 预编译
preparedStatement = conn.prepareStatement(sql);
// 设置参数
preparedStatement.setString(1, "XX");
// 执行查询,返回结果
rs = preparedStatement.executeQuery();
// 从结果中取出数据
String xx = rs.getString("xx");
// 释放资源
rs.close();
preparedStatement.close();
conn.close();

从jdbc代码中可以看到,从数据库获取数据无非就这么几步,但是要是每次就这么写的话总是有点麻烦,所有各种框架就出来了,比如我们要说的Mybatis。

Mybatis

废话不多说,大多数内容网上一搜一大把,我们直接开始进行手写Mybaits第一版内容。

第一步:抽取配置等信息到properties文件中

JDBC代码中的参数大多数都是采用硬编码方式,不利于后期的维护,我们把这些信息抽取出来

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/mysql
db.username=user
db.password=123456
db.sql=select id from user where username = ?

第二步:写代码

直接采用面向过程的方式上代码

1.定义测试方法

public void mybatis1() {
	//加载配置properties文件内容
	Properties properties = loadProperties();
	//执行
	executeJDBC(properties, "xx");
}

看到了没,可以说如果用的话就这两步就可以了(当然,我们这里的逻辑不复杂,所以写的很简单),但是,具体内部的逻辑就需要来填充的。

2.创建 loadProperties() 方法

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;
}

这方法就是加载properties文件成Properties对象供后续使用

3.编写 executeJDBC() 方法

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.getConnection(properties.getProperty("db.url"),
				properties.getProperty("db.username"), properties.getProperty("db.password"));
		String sql = properties.getProperty("db.sql");
		preparedStatement = conn.prepareStatement(sql);
		preparedStatement.setString(1, "王五");
		rs = preparedStatement.executeQuery();
		while (rs.next()) {
			System.out.println(rs.getString("id") + " " + rs.getString("username"));
		}
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		rs.close();
	    preparedStatement.close();
		conn.close();
	}
}

executeJDBC方法就封装了JDBC的执行逻辑,我们直接调用就可以了,无需关注怎么处理的。
到这里我们的第一版就写完了,是不是很low?是不是很简单?
这是最最最简易版的!!!

总结

从上面可以看出,Mybaits的思路分为两个流程

  1. 解析(把配置文件中的内容解析出来后续使用)
  2. 执行(封装了执行操作数据库的方法供我们使用)

用properties文件也不是那么灵活,下一版将对此继续改造,把properties文件换成Mybatis的xml形式进行编写,逻辑要相对这个复杂的多得多,继续努力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值