MyBatis学习笔记(1)-MyBatis介绍

JDBC介绍

在JavaWeb开发中,必须要面对的一个问题就是用Java访问数据库,对此Java提供了一套API名叫JDBC(Java Database Connectivity),它是Java访问数据库的一种规范。通过使用JDBC中的接口和类,可以使Java客户端程序访问数据库,比如建立数据库连接、执行SQL语句进行数据的存取操作。

Java使用JDBC访问数据库的步骤为:

  1. 得到数据库驱动程序
  2. 创建数据库连接
  3. 执行SQL语句
  4. 得到结果集
  5. 对结果集做相应的处理(增,删,改,查)
  6. 关闭资源:这里释放的是DB中的资源

按照以上步骤,编写一个JDBC的入门程序如下:

package com.crow.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcTest {
    public static void main(String[] args) throws Exception{
        String url = "jdbc:mysql://localhost:3306/OrderForm";
        String username = "root";
        String password = "123456";
        Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
        Connection conn = DriverManager.getConnection(url, username, password);////通过驱动管理类获取数据库链接
        Statement statement = conn.createStatement();//获取用于向数据库发送sql语句的statement
        String sql = "select * from user";//定义sql语句
        ResultSet resultSet = statement.executeQuery(sql);//向数据库发sql,并获取结果集
        while (resultSet.next()){//取出结果集的数据
            System.out.println("id = " + resultSet.getObject("id"));
            System.out.println("username = " + resultSet.getObject("username"));
            System.out.println("birthday = " + resultSet.getObject("birthday"));
            System.out.println("sex = " + resultSet.getObject("sex"));
            System.out.println("address = " + resultSet.getObject("address"));
        }
        //释放资源
        resultSet.close();
        statement.close();
        conn.close();
    }
}

但是如果要用原生JDBC开发JavaWeb项目,则会存在很多问题:

  1. 数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁的开启和关闭,造成数据库的资源浪费,影响数据库的性能。
  2. 将SQL语句硬编码到Java代码中,如果SQL语句修改,需要重新编译Java代码,不利于系统维护。
  3. 向preparedStatement中设置参数,把占位符和参数硬编码在Java代码中,不利于系统维护。
  4. 从resultSet中遍历获取结果集数据时,对table的字段存在硬编码,不利于系统维护。

为了解决这些问题,可以提出如下设想:

  1. 使用数据库连接池来管理数据库的连接。
  2. 将SQL语句配置在XML文件中,即使SQL变化,不需要对Java代码进行重新编译。
  3. 将SQL语句及占位符号和参数都配置在XML配置文件中。
  4. 将查询的结果集自动映射为Java对象。

而MyBatis则恰好实现了这些设想。

MyBatis

MyBatis是什么

MyBatis是一个优秀的持久层的框架。 它对jdbc的操作数据库的过程进行封装,让程序主要精力放在SQL上,而不需要去处理注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。 Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成Java对象(POJO)并返回。

MyBatis框架结构

MyBatis框架原理如下图

具体流程如下:

  1. 配置mybatis的配置文件SqlMapConfig.xml
  2. 通过配置文件加载MyBatis运行环境,创建SqlSessionFactory会话工厂(使用单例模式)。
  3. 通过SqlSessionFactory创建SqlSession。SqlSession提供了操作数据库的各种方法(它的实现对象是线程不安全的,建议把SqlSession写在方法体内)。
  4. 调用SqlSession的方法去操作数据。如果需要提交事务,需要执行SqlSession的commit()方法。
  5. 释放资源,关闭SqlSession。
发布了248 篇原创文章 · 获赞 32 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/tianshan2010/article/details/103971471