美文网首页MyBatis
MyBatis 初窥 (一)

MyBatis 初窥 (一)

作者: 沈先生的影子 | 来源:发表于2020-11-10 11:54 被阅读0次

为什么要用Mybatis?

  看一段JDBC的代码

public class DbUtil {

    public static final String URL = "jdbc:mysql://localhost:3306/imooc";
    public static final String USER = "liulx";
    public static final String PASSWORD = "123456";

    public static void main(String[] args) throws Exception {
        // 1.加载驱动程序
        Class.forName("com.mysql.jdbc.Driver");
        // 2. 获得数据库连接
        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
        // 3.操作数据库,实现增删改查
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM imooc_goddess");
        // 如果有数据,rs.next()返回true
        while(rs.next()){
            System.out.println(rs.getString("user_name")+" 年龄:"+rs.getInt("age"));
        }

        // 关闭连接
        rs.close();
        stmt.close();
        conn.close();
    }
}

再封装一次

public class DbUtil {
    public static final String URL = "jdbc:mysql://localhost:3306/imooc";
    public static final String USER = "liulx";
    public static final String PASSWORD = "123456";
    private static Connection conn = null;
    static{
        try {
            //1.加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            //2. 获得数据库连接
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        return conn;
    }

    public static void close(Connection connection) {
        try {
            if (connection != null && !connection.isClosed()) {
                connection.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}

java提供了jdbc来与数据库通讯,使用jdbc操作数据库数据需要五步:

  1.加载驱动。
  2.获取数据库连接。
  3.操作数据库,增删改查。
  4.处理结果集
  5.关闭连接

看了上面的代码,分析一下,在功能越来越多的情况下会造成什么问题?

重复代码
  每次获取连接,处理结果集,关闭连接这些代码都重复的,当我们的功能越来越多,会出现大量的代码冗余。

资源管理
  数据库连接是非常占用资源的,尤其是在高并发的情况下,如果每次都去建立数据库连接就会有性能问题。

后面提出了连接池的解决方案。

Result Set 结果集映射
  ResultSet需要转换成POJO,都需要手动处理,会产生大量的重复代码,并且无法重用。

SQL和代码耦合
  SQL和业务代码耦合在一起,违反高内聚、低耦合的程序设计思想。

还是那个问题为什么要用Mybatis?????

  使用原生JDBC在我们日益渐大复杂的系统,频繁的开关数据库连接、各种复杂的Resultset、业务需求的改动、SQL代码和冗余代码的过多,已经各位秃头不堪重负,所以要减负!!!!

怎么减负?

  Apache提出了DBUtils工具类,大大减少了操作数据库的代码,但是工具类也只是简单的封装JDBC,并不解渴,真正解放双手的是ORM概念的提出。

工具类解决了:支持数据源、方法封装、映射结果集
工具类没解决:SQL硬编码、参数只能顺序传入、没有提供缓存功能、ORM映射没有实现(实体类到数据库映射)。

  (Object Relational Mapping ORM)概念和框架推出,结合连接池的时候可以解决大部分JDBC的问题,节省了大量的开发时间和成本,甚至有的框架可以实现消灭SQL。

  如今市场上的框架大部分使用:Mybatis、Jpa、Hibernate。
在这里我就不讨论其他框架的优缺点了,后面会开一篇文章专门解释其优缺点。

我们来聊聊Mybatis可以给我们带来什么?

看看MyBatis的特性:

  1.使用连接池对连接进行管理。
  2.SQL和代码分离,集中管理。
  3.参数映射和动态SQL。
  4.结果集映射。
  5.缓存管理。
  6.重复的SQL提取。
  7.插件机制。

mybatis 怎么运行呢?怎么使用?高雅的使用?

请听下回分解

相关文章

  • MyBatis 初窥 (一)

    为什么要用Mybatis?   看一段JDBC的代码 再封装一次 java提供了jdbc来与数据库通讯,使用jdb...

  • MyBatis 初窥(三)

    MyBatis的工作流程 1.解析配置文件   对于MyBatis来说,我不知道你的数据库地址和账户啊,你要告诉我...

  • MyBatis 初窥(二)

    一、MyBatis 实际使用案例 编程式使用   JavaApi编程的方式使用。 1.引入Mybatis jar ...

  • 初窥

    初窥世界的美好 白的风 白的肌肤 和盈盈一握的腰肢 在你的头发里 有一个蓝色大海的梦 蓝的帆船和蓝的浪花 自然是美...

  • 初窥

    这个积分管理项目已经到收尾的阶段了,感受良多。 对于错误处理这方面这周我的规划也更为清楚一些了。明天如果能够预期结...

  • ReactiveCocoa 5.0 初窥:可能是最痛的一次升级

    ReactiveCocoa 5.0 初窥:可能是最痛的一次升级 ReactiveCocoa 5.0 初窥:可能是最...

  • 初窥南京

    古鸡鸣寺门外,一条长满爬山虎的墙。 城墙下的绿植。 1912街区,没有什么能过阻挡,我对自由的向往。 午后墙壁上斑...

  • 初窥HTTP

    要知道HTTP肯定要先知道WWW,下面我用思维导图来介绍下: 1,弄懂了上图的关系,接下来着重介绍HTTP。 先介...

  • 初窥Scrapy

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据...

  • mongodb初窥

    启动MongoDB服务:在 MongoDB 安装目录的 bin 目录下执行mongod show dbs -- 显...

网友评论

    本文标题:MyBatis 初窥 (一)

    本文链接:https://www.haomeiwen.com/subject/wjyqbktx.html