1.mybatis

1.mybatis介绍

mybatis 是一个优秀的基于java的持久层框架,它内部封装了 jdbc,使开发者只需要关注sql语句本身,而不需要花费精力 去处理加载驱动、创建连接、创建statement等繁杂的过程。

2.mybatis优点

  • 简化了JDBC代码
  • 支持连接池,提高程序执行效率
  • 返回结果ResultSet自动封装成java对象

提供了映射标签,支持对象与数据库的ORM关系字段映射。

ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

3.Mybatis 操作数据库的方式

  1. 可以通过xml文件的方式执行sql;
  2. 可以通过注解的方式执行SQL;

xml执行sql较复杂,这里我们采用注解执行sql

2.Mybatis入门

创建一个简单mybatis程序

要求从数据库中获取stu表数据,并输出

1.创建Springboot工程

勾选Mybatis Mysql,配置Mybatis 4要素

springboot DataSource获取数据库链接 springboot手动获取数据库连接_spring boot

springboot DataSource获取数据库链接 springboot手动获取数据库连接_后端_02

springboot DataSource获取数据库链接 springboot手动获取数据库连接_spring boot_03

创建时版本不一致会报错

【java: 无法访问org.springframework.boot.SpringApplication

类文件具有错误的版本 61.0, 应为 52.0

请删除该文件或确保该文件位于正确的类路径子目录中】

后来修改版本,问题解决,我springboot的是2.7.5 java版本是11 Mybatis是3.0.3

springboot DataSource获取数据库链接 springboot手动获取数据库连接_spring boot_04

springboot DataSource获取数据库链接 springboot手动获取数据库连接_spring boot_05

springboot DataSource获取数据库链接 springboot手动获取数据库连接_数据库连接池_06

2.创建stu表,Stu类

springboot DataSource获取数据库链接 springboot手动获取数据库连接_数据库连接池_07

springboot DataSource获取数据库链接 springboot手动获取数据库连接_spring boot_08

3.创建持久层接口

@Mapper作为依赖注入

在接口中定义一个方法list,该方法注解@Select查询包含Sql语句

注意接口所在包应该是启动类所在包的子包,确保能被组件扫描 ComponentScan扫描到

springboot DataSource获取数据库链接 springboot手动获取数据库连接_spring boot_09

4.Test测试类

@Autowired依赖注入接口对象,调用接口list方法查询数据,使用list集合(类型为该对象的类)接收,stream遍历

springboot DataSource获取数据库链接 springboot手动获取数据库连接_后端_10

5.运行结果

springboot DataSource获取数据库链接 springboot手动获取数据库连接_spring boot_11

3.数据库连接池技术

1.原始JDBC

原始JDBC是java官方提供的操作关系数据库的接口,通过安装对应数据库的驱动jar包实现接口

public class JDBCDemo {
    public static void main(String[] args) throws Exception{
        //获取数据库连接对象
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","root");
        //定义sql语句
        String sql = "select * from db1.emp";
        //获取执行sql的对象Statement
        Statement stmt = conn.createStatement();
        //执行sql
        ResultSet resultSet = stmt.executeQuery(sql);
        //处理结果
        while(resultSet.next()) {             
            int id = resultSet.getInt(1);                    //获取id
            String name = resultSet.getString("ename");             //获取姓名
            System.out.println("id:" + id + " name:" + name);
        }
        //释放资源
        stmt.close();
        conn.close();
    }
}

原始JDBC程序比较臃肿,每次释放资源造成浪费,

现在企业使用springboot+Mybatis 使用数据库连接池技术

2.数据库连接池

数据库连接池是一个容器,管理数据库的连接

springboot+Mybatis采用数据库连接池技术管理数据库链接,提高速度,资源重用,

官方为数据库连接池提供DateSource接口,最常用的实现产品是德鲁伊druid和追光者HiKari

使用时 pom.xml引入依赖

springboot DataSource获取数据库链接 springboot手动获取数据库连接_数据库连接池_12

springboot DataSource获取数据库链接 springboot手动获取数据库连接_sql_13