前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(干货)老大:你为什么要用Mybatis,JDBC存在哪些问题?

(干货)老大:你为什么要用Mybatis,JDBC存在哪些问题?

作者头像
手撕代码八百里
发布2021-04-20 10:43:50
2480
发布2021-04-20 10:43:50
举报
文章被收录于专栏:猿计划

文章目录

(一)jdbc查询代码

下面这段jdbc查询的代码,想必每个学过javaweb的同学,都是经历过的。

代码语言:javascript
复制
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", "123456");
            // 定义sql语句?表示占位符
            String sql = "select * from user where username = ?";
            // 获取预处理statement
            preparedStatement = connection.prepareStatement(sql);
            // 设置参数,第⼀个参数为sql语句中参数的序号(从1开始),第⼆个参数为设置的参数值
            preparedStatement.setString(1, "tom");
            // 向数据库发出sql执⾏查询,查询出结果集
            resultSet = preparedStatement.executeQuery();
            // 遍历查询结果集
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String username = resultSet.getString("username");
                // 封装User
                user.setId(id);
                user.setUsername(username);
            }
            System.out.println(user);
        }
    } 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.printStackTrace();
            } }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } 
    }

通过上面这段再熟悉不过的jdbc代码,可以看到,使用再多的jdbc对数据库做操作的时候,无非就这么几个步骤:

  • 1、加载数据库驱动;
  • 2、通过驱动管理类获取数据链接;
  • 3、自定义sql语句;
  • 4、拿到sql语句,并执行;
  • 5、拿到执行结果。

(二)JDBC存在的问题:

  • 1、数据库配置信息、sql执行语句等,写死在Java代码中(存在硬编码,不方便后期维护);
  • 2、每一次执行sql都会创建一个链接,并释放(浪费资源);
  • 3、对最终执行的结果需要手动的去封装返回结果集,较为繁琐。

(三)解决方案:

  • 1、使用配置文件加载配置信息;
  • 2、使用连接池,资源不用了就放回去,等待下一个使用的人;
  • 3、可以使用反射,对表的字段和Java实体类的属性做自动映射。
  • 4、使用其他持久层框架,例如:Mybatis
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • (一)jdbc查询代码
  • (二)JDBC存在的问题:
  • (三)解决方案:
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档