Mybatis快速复习--简介篇

简介: Mybatis快速复习--简介篇

MyBatis简介


MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

原来的名字叫iBais

本来代码在Apache放着,后来又放到Google Code上了。然后就改名为Mybatis了~

优点

  • 很容易学,很小巧,没有第三方依赖,装两个jar包+几个sql映射文件即可
  • 灵活,因为我是学完动态sql之后才回来写的笔记,月学到后面越发现这玩意是真灵活能有很多组合呀,判断啊。然后呢,sql写在xml文件里,能方便的进行统一管理和优化。
  • 提供映射标签,支持对象与数据库的字段关系映射
  • 提供xml标签,支持动态sql就是编写一些判断语句根据实时发生的情况进行改变这就叫动态

缺点

  • 写sql 的时候工作量很大,对于很多字段的,关联了很多表的更是这样,学着学着我就有感觉这玩意也没多容易啊不想前面学的spring和springMVC这么简单,这还是要写这么多。
  • sql语句依赖于数据库,移植性差
  • 二级缓冲机制不太行


JDBC


JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC代表Java数据库连接


JDBC操作数据库的流程


面试可能会问,背!

下面这些就很固定的步骤

  • 导入数据库驱动
  • 注册驱动
  • 获取数据库连接对象
  • 写sql
  • 预编译
  • 执行sql
  • 封装对象


JDBC连接池


获取数据库连接对象的时候太消耗资源,所以呢就出现连接池技术

我将数据库连接对象多放几个在一个池子里,你用的时候直接从池子里取不用的话在放回来。这样就不用一直连数据库了,提高了效率节省了资源

常用的连接池有Druid,C3P0

它优化后的JDBC流程为:

  1. 导入Druid的jar包
  2. 定义配置文件
  3. 通过工厂类获取数据库连接池对象
  4. 写sql
  5. 预编译
  6. 执行sql
  7. 封装结果


/**
 * 定义一个方法,查询emp表的数据将其封装为对象,然后装载集合,返回
 */
public class JdbcDemo06 {
    public static void main(String[]args){
        List<Emp> list = new JdbcDemo06().findall();
        System.out.println(list);
    }
    public List<Emp> findall() {
        Connection conn = null;
        Statement stmt = null;
        ResultSet res = null;
        ArrayList<Emp> list = null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接对象
            conn = DriverManager.getConnection("jdbc:mysql:///db2", "root", "root");
            //3.定义sql
            String sql = "select * from emp";
            //4.获取执行sql对象
            stmt = conn.createStatement();
            //5.执行sql
            res = stmt.executeQuery(sql);
            //6.处理结果
            Emp emp = null;
            list = new ArrayList<>();
            while (res.next()) {
                int id = res.getInt("id");
                String ename = res.getString("ename");
                int job_id = res.getInt("job_id");
                //创建emp对象,并赋值
                emp = new Emp();
                emp.setId(id);
                emp.setEname(ename);
                emp.setJob_id(job_id);
                //装载集合
                list.add(emp);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (res != null) {
                try {
                    res.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    return list;
    }
}
输出结果为:
    [Emp{id=1001, ename='孙悟空', job_id=4}, Emp{id=1002, ename='卢俊义', job_id=3}, Emp{id=1003, ename='林冲', job_id=3}, Emp{id=1004, ename='唐僧', job_id=2}, Emp{id=1005, ename='李逵', job_id=4}, Emp{id=1006, ename='宋江', job_id=2}, Emp{id=1007, ename='刘备', job_id=2}, Emp{id=1008, ename='猪八戒', job_id=4}, Emp{id=1009, ename='罗贯中', job_id=1}, Emp{id=1010, ename='吴用', job_id=3}, Emp{id=1011, ename='沙僧', job_id=4}, Emp{id=1012, ename='李逵', job_id=4}, Emp{id=1013, ename='小白龙', job_id=4}, Emp{id=1014, ename='关羽', job_id=4}]

Spring JdbcTemplate


Spring JdbcTemplate(使用详解) (biancheng.net)

用原生的jdbc API进行开发太繁琐了,例如我们要手动控制数据库连接的开启,异常处理,事务处理,最后还要关闭连接释放资源。

Spring帮我们提供了一个JDBC模块,它对Jdbc API进行了封装,目的就是为了更简洁的使用JDBC API。

使用SpringJDBC,开发人员只需要定义必要的参数、指定需要执行的sql语句,即可对数据库进行访问。

至于驱动的加载、数据库连接的开启与关闭、SQL 语句的创建与执行、异常处理以及事务处理等繁杂乏味的工作,则都是由 Spring JDBC 完成的。

简单的说就是,Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作。


为什么不用Spring JdbcTemplate


功能简单;

sql语句编写在java代码里;

硬编码高耦合


Hibernate?


全自动ORM框架,将jdbc的操作再次封装

只需要将一个javaBean交给它,它就能自己从数据库中取数据,全自动映射,不用自己写sql

如果要自己写sql,需要专门学习HQL

image.png


Mybatis?!


解决了Hibernate的问题,把编写sql这一步提取出来,把sql写在配置文件中

让程序员自己写sql

image.png

这节主要是简单了解下mybatis和jdbc,jdbctemplate他们的概念和他们之间的联系



相关文章
|
SQL Java 数据库连接
Mybatis入门简介
Mybatis入门简介
104 0
|
7月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
311 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
7月前
|
XML Java 数据库连接
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
【1月更文挑战第2天】 MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
177 2
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
|
7月前
|
SQL XML Java
MyBatis简介及入门案例
MyBatis简介及入门案例
76 0
|
Java 数据库连接 Maven
SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现
SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现
57 0
|
SQL 存储 Java
MyBatis简介
MyBatis简介
92 0
|
SQL XML Java
mybatis-plus 简介、安装、配置(1)【just Like】
mybatis-plus 简介、安装、配置(1)【just Like】
250 0
mybatis-plus 简介、安装、配置(1)【just Like】
|
SQL XML Java
MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较
MyBatis 前身是Apache基金会的开源项目iBatis,在2010年该项目脱离Apache基金会并正式更名为MyBatis,在2013年11月,MyBatis迁移到了GitHub。
213 0
MyBatis 学习笔记(一)MyBatis的简介与使用以及与其他ORM框架的比较
|
SQL XML 存储
MyBatis框架:第一章:简介
MyBatis框架:第一章:简介
114 0
MyBatis框架:第一章:简介
|
Java 数据库连接 数据库
Mybatis Plus 中的LambdaQueryWrapper简介
Mybatis Plus 中的LambdaQueryWrapper简介
1125 0