Mybatis-为什么使用mybatis

第一节 为什么使用mybatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

JDBC缺点数据库信息硬编码,创建与释放连接频繁sql语句设置参数复杂,获取结果硬编码问题封装返回结果集较为繁琐 。解决思路,使用配置文件、连接池、反射和内省解决相关问题。
所以学习Mybatis是为了解决传统JDBC的复杂的操作,提高工作效率和代码性能。

JDBC 执行步骤

  1. 加载数据库驱动
  2. 创建并获取数据库链接
  3. 创建jdbc statement对象
  4. 设置sql语句
  5. 设置sql语句中的参数(使用preparedStatement)
  6. 通过statement执行sql并获取结果
  7. 对sql执行结果进行解析
  8. 释放资源,包括resultSet、preparedStatement、connection

从下边的代码可以看出

public class MainTest {

    public static void main(String[] args) {
		String driveName = "com.mysql.cj.jdbc.Driver";
		String url = "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8";
		String user = "root";
		String pass = "123456";

		
		// java.sql中 Connection 与特定数据库连接,在连接上下文中执行sql语句并返回结果
		Connection connection = null;
		PreparedStatement preparedStatement= null;
		ResultSet resultSet =null;
		try {
			//加载数据库驱动
			Class.forName("com.mysql.cj.jdbc.Driver");
			//通过驱动管理类获取数据库链接
			connection = DriverManager.getConnection(url, user, pass);
			//定义sql语句 ?表示占位符
			String sql = "select * from stuInfo where id = ?";
			//获取预处理statement
			preparedStatement = connection.prepareStatement(sql);
			//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
			preparedStatement.setString(1, "1");
			//向数据库发出sql执行查询,查询出结果集
			resultSet =  preparedStatement.executeQuery();
			//遍历查询结果集
			while(resultSet.next()){
				System.out.println(resultSet.getString("id")+"  "+resultSet.getString("name"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//释放资源
			if(resultSet!=null){
				try {
					resultSet.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(preparedStatement!=null){
				try {
					preparedStatement.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(connection!=null){
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}

		}
	}
    }
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享