1. 什么是MyBatis
MyBatis是一个基于java的持久层框架,它的底层封装了jdbc,使我们不用与jdbc api打交道,就可以完成数据库持久层的操作。使用MyBatis框架,开发者只需要关注sql语句本身,不必像传统jdbc编程那样,花费大量时间处理加载驱动、创建连接、创建statement、执行查询、遍历结果集、释放资源等一系列重复步骤。
MyBatis采用ORM思想(object relational mapping 对象关系映射),解决实体和数据库之间的映射问题。
* O:面向对象领域的Object(JavaBean对象)
* R:关系数据库领域的Relational(表的结构)
* M:映射Mapping(XML的配置文件)
MyBatis通过xml或注解的方式将要执行的各种sql配置起来,并通过MyBatis框架执行该sql语句,将结果映射成java对象返回。
2. 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, "张三");
// 查询数据库,获取结果集
resultSet = preparedStatement.executeQuery();
//遍历结果集
while(resultSet.next()){
System.out.println(resultSet.getString("id")+resultSet.getString("username"));
}
}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.printS