Mybatis入门

文章介绍了如何在SpringBoot中集成并使用Mybatis,包括创建实体类、配置数据库连接、编写Mapper接口以及使用Lombok简化实体类。同时,讨论了JDBC的基本操作并与Mybatis进行了对比,提到了数据库连接池的概念,并给出了Druid连接池的配置示例。
摘要由CSDN通过智能技术生成

简介

之后我们不能一直在图形化界面来操作数据库
需要用Java来操作数据库
对应的框架技术就是-Mybatis
在这里插入图片描述
Mybatis用于简化JDBC(java程序操作数据库)开发
在这里插入图片描述
在这里插入图片描述

Mybatis快速入门

在这里插入图片描述

我们是在SpringBoot中使用Mybatis的
新建模块
选择Mybatis相关依赖
在这里插入图片描述
然后定义实体类pojo中的user和我们的数据库中的表对应
一般推荐建实体类用包装类,int就用Integer
对应tinyint用Short(Java不支持无符号,所以要多一个字节的short)
在这里插入图片描述

在然后配置Myabtis
在我们resource下的application.properties中存储
这四个格式是固定的

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=123456

在这里插入图片描述

最后第三步编写sql语句
Mapper,@Mappper会将接口交给IOC容器
IOC容器会生成实现接口的类
@Select里面就是注释语句呗
在这里插入图片描述
在test测试类进行测试
此时用DI(依赖注入)的@AutoWired就可以得到userMapper对象
然后调用即可
在这里插入图片描述
输出成功
在这里插入图片描述

小插曲

中间报错很多次
主要是
mybatis和jdk的版本不合
还有spring版本和jdk版本不合
需要在pom.xml里更改
我用的JDK11,对应依赖

  <dependencies>
        <dependency>
            <!--mysql起步依赖-->
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <!--mysql驱动包-->
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
        <!--springboot单元测试-->
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
            <version>2.3.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

这个是那个框架版本(继承的spring框架)

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

配置SQL提示

当我们写这个语句的时候是没有提示的
如果让它变的有提示呢?
在这里插入图片描述
需要进行配置
在这里插入图片描述
在这里插入图片描述
这样的话就有提示了
在这里插入图片描述

可能错的地方

配置一下数据库就可以
在这里插入图片描述
注意:必须是连接到对应的数据库
到指定的数据库,而不是只到localhost:3306
当然到DMBS这层可以像mybatis.user这写表

在这里插入图片描述
这样就不会报错了
在这里插入图片描述

JDBC介绍

之前写过文章,这里不详细写了
主要是mybatis和JDBC的联系
在这里插入图片描述
这就是JDBC程序
也是mybatis的底层

@Test
    public void testJdbc() throws Exception {
        //1. 注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2. 获取连接对象
        String url = "jdbc:mysql://localhost:3306/mybatis";
        String username = "root";
        String password = "1234";
        Connection connection = DriverManager.getConnection(url, username, password);

        //3. 获取执行SQL的对象Statement,执行SQL,返回结果
        String sql = "select * from user";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);

        //4. 封装结果数据
        List<User> userList = new ArrayList<>();
        while (resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            short age = resultSet.getShort("age");
            short gender = resultSet.getShort("gender");
            String phone = resultSet.getString("phone");

            User user = new User(id,name,age,gender,phone);
            userList.add(user);
        }

        //5. 释放资源
        statement.close();
        connection.close();
    }

JDBC和mybatis对比

JDBC弊端:硬编码
重复获取连接和释放连接,资源浪费,性能降低
获取字段过程繁琐
在这里插入图片描述

关于mybatis怎么解决重复获取和释放连接问题(其他两个问题都看得出来吧)
就是建立了一个数据库连接池,用的时候拿
不用的时候归还给连接池
数据库连接池之后会单独了解

在springboot里面用mybatis我们需要注意的点

在正确的导入依赖后(记得检查版本号是否匹配)
在这里插入图片描述
基本就这两个点,一个是数据库连接配置信息
还有一个就是Mapper代理开发

数据库连接池

简介

初始化一定连接对象
当有sql语句执行从连接池获取连接,sql语句执行完把语句归还给连接池
是归还和调用的关系(更高效)
而不是建立和释放的关系
且当有客户端获取连接,但该连接一直空闲,数据库连接池会检测该连接空闲时间,当超过一个阈值就会把连接收回
在这里插入图片描述

实现

在这里插入图片描述
后面两个连接池常用
想要更换成druid连接池
有两种方式
1.在pom.xml导入依赖
2.如图更改下配置文件

在这里插入图片描述
如果访问的话
把配置信息改成下面这种形式!

# 2. 配置相关信息
# 第一种配置方法:通过spring.datasource.type配置druid
#spring:
#  datasource:
#    driver-class-name: com.mysql.cj.jdbc.Driver   # mysql 驱动
#    url: jdbc:mysql://localhost:3306/springboot_test?characterEncoding=utf8&serverTimezone=UTC  # 连接数据库
#    username: root    # 数据库账户
#    password: root    # 数据库密码
#    type: com.alibaba.druid.pool.DruidDataSource

# 第二种配置方法:druid 专用配置(推荐)
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver   # mysql 驱动
      url: jdbc:mysql://localhost:3306/springboot_test?characterEncoding=utf8&serverTimezone=UTC  # 连接数据库
      username: root    # 数据库账户
      password: root    # 数据库密码

关于配置时区的解释

Spring Boot中,当我们整合Druid作为数据库连接池时,设置serverTimezone=UTC是为了解决时区的问题。
这是因为Druid默认使用UTC时间作为数据库的时区,而如果不设置serverTimezone=UTC
可能会导致在使用数据库时出现时间偏移的情况。

通过设置serverTimezone=UTC,我们告诉Druid使用UTC作为服务器的时区
这样可以确保在与数据库进行时间相关操作时,使用统一的时区,避免产生时间偏移。

需要注意的是,如果你的应用程序所在的服务器时区不是UTC
你还需要在应用程序的配置文件中设置对应的时区,确保应用程序和数据库使用相同的时区。
这样才能保证时间的一致性。

lombok工具包

为了简化实体类来的一种技术
只需要在对应sql的实体类上加一个注解

@Data
即可

在这里插入图片描述
且不止这种方法
这里是lombok的全部注解
在这里插入图片描述

@data不包括无参构造和全参构造

使用

还是先导入依赖
在这里插入图片描述
这样即可
在这里插入图片描述
target存储编译后的字节码文件
编译后就把对应的注解生成对应的代码了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁拒绝摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值