侧边栏壁纸
博主头像
DJ's Blog博主等级

行动起来,活在当下

  • 累计撰写 133 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

【Mybatis】简介

Administrator
2022-04-03 / 0 评论 / 0 点赞 / 61 阅读 / 2665 字

【Mybatis】简介

JDBC操作数据库

代码示例

@Test
public void testJdbc() throws IOException {
    Connection conn = null;
    Statement stmt = null;
    Blog blog = new Blog();
    try {
        // 1.注册JDBC驱动
        // Class.forName("com.mysql.jdbc.Driver");
        // 2.打开连接,获取一个Connection
        conn = DriverManager.getConnection("jdbc:mysql://192.168.247.130:3306/gupao_mybatis", "root", "123456");
        // 3.创建一个Statement
        stmt = conn.createStatement();
        String sql = "SELECT bid, name, author_id FROM blog where bid = 1";
        // 4.执行查询
        ResultSet rs = stmt.executeQuery(sql);
        // 5.获取ResultSet结果集,并给POJO赋值
        while (rs.next()) {
            Integer bid = rs.getInt("bid");
            String name = rs.getString("name");
            Integer authorId = rs.getInt("author_id");
            blog.setAuthorId(authorId);
            blog.setBid(bid);
            blog.setName(name);
        }
        System.out.println(blog);
        // 5.关闭数据库相关资源资源
        rs.close();
        stmt.close();
        conn.close();
    } catch (SQLException se) {
        se.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (stmt != null) {
                stmt.close();
            }
        } catch (SQLException se2) {
        }
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException se) {
            se.printStackTrace();
        }
    }
}

存在的问题

  • 重复代码
  • 资源管理
  • 结果集处理
  • SQL耦合

JDBC轻量级封装

解决的问题

  • 重复代码:对操作数据库的增删改查的方法进行封装
  • 资源管理:无论是QueryRunner还是JdbcTemplate都可以传入一个数据源进行初始化,也就是资源管理可以交给专门的数据源组件去做,不用我们手动创建和关闭
  • 结果集处理:无论是ResultSetHandler还是RowMapper都可以帮助我们映射结果集,无论是List,Map还是POJO

存在的不足

  • SQL耦合:SQL语句都是写死在代码里面,依旧存在硬编码的问题
  • 传参只能按照固定位置顺序
  • 只能把结果集映射成POJO,不能直接把POJO映射成数据库记录
  • 查询没有缓存功能,性能不够好

例子

Apache DbUtils

官网:https://commons.apache.org/proper/commons-dbutils/

Spring Jdbc

ORM框架

Hibernate

Mybatis

0

评论区