一:Mybatis的基础

JDBC连接数据库

  Connection conn = null;
        Statement stmt = null;
        Blog blog = new Blog();

        try {
            // 注册 JDBC 驱动
            Class.forName("com.mysql.jdbc.Driver");

            // 打开连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis", "root", "123456");

            // 执行查询
            stmt = conn.createStatement();
            String sql = "SELECT bid, name, author_id FROM blog where bid = 1";
            ResultSet rs = stmt.executeQuery(sql);

            // 获取结果集
            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);

            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();
            }
        }

JDBC连接的缺点

  1. 手动关闭资源;
  2. 手动处理结果集;
  3. 业务逻辑与数据库操作的代码耦合;
  4. 代码重复

Spring JDBC

  @Autowired
    JdbcTemplate jdbcTemplate;

    @Test
    public void myTest(){
        List list = jdbcTemplate.query("select * from tbl_emp",new EmployeeRowMapper());
        System.out.println(list);
        List list1  = jdbcTemplate.query("select * from tbl_emp", new BaseRowMapper(Employee.class));
        System.out.println(list1);
    }

Spring JDBC 优缺点

优点

  1. 方法封装:实现RowMapper接口,数据库字段可转换为实体类
  2. 连接数据源
  3. 映射结果集

缺点
没有解决

  1. SQL硬编码
  2. 参数只能顺序插入
  3. 没有缓存功能
  4. 没有实现实体类到数据库记录的反射

ORM框架

一:Mybatis的基础

hibernate

hibernate 是重量级关系数据库。
通过hbr.xml 或者 注解 使用。
问题:

  1. 不能指定部分字段
  2. 不支持动态sql
  3. 不支持自定义sql

Mybatis

特性:

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

如何选择ORM框架?

  1. 简单项目选择hibernate
  2. 需要灵活的sql,可以使用Mybatis
  3. 对性能要求高,可以使用JDBC
  4. Spring JDBC 可以和ORM框架混用
上一篇:Shiro中md5加密--散列算法(转)


下一篇:[极客大挑战 2019]BuyFlag