JDBC Mybatis

目录

JAVA程序操作数据库

JDBC-介绍

JDBC-入门程序

JDBC-查询数据

预编译SQL

Mybatis

辅助配置-配置SQL提示

辅助配置-配置Mybatis的日志输出

[JDBC VS Mybatis](#JDBC VS Mybatis)

数据库连接池

优势

标准接口:DataSource

切换数据库连接池

增删改查操作

删除用户-delete

新增用户-insert

修改用户-update

查询用户-select

XML映射配置

默认规则

XML映射文件-辅助配置

SpringBoot配置文件

yaml配置文件

练习:在application.yml配置文件中配置相关的配置项


JAVA程序操作数据库

JDBC(Java DataBase Connectivity),使用Java语言操作关系型数据库的一套API

JDBC-介绍

JDBC-入门程序

JDK版本和Maven版本要匹配,否则会报错

java 复制代码
package com.itheima;
import org.junit.jupiter.api.Test;

import java.sql.*;

public class JdbcTest1 {

    /**
     * JDBC入门程序
     */
    @Test
    public void testUpdate() throws Exception {
        //1. 注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2. 获取数据库连接
        String url = "jdbc:mysql://localhost:3306/web01";
        String username = "root";
        String password = "123456";
        Connection connection = DriverManager.getConnection(url, username, password);

        //3. 获取SQL语句执行对象
        Statement statement = connection.createStatement();

        //4. 执行SQL
        int i = statement.executeUpdate("update user set age = 25 where id = 1");//DML
        System.out.println("SQL执行完毕影响的记录数为: " + i);

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

JDBC-查询数据

**需求:**基于JDBC执行如下select语句,将查询结果封装到User对象中(AI辅助)

**SQL:**select * from user where username = 'daqiao' and password = '123456'

**ResultSet(结果集对象):**ResultSet rs = statement.executeQurey()

**next():**将光标从当前位置向前移动一行,并判断当前行是否为有效行,返回值为boolean

  • **true:**有效行,当前行有数据
  • **false:**无效行,当前行没有数据

**getXxx():**获取数据,可以根据列的编号获取,也可以根据列名获取(推荐)

java 复制代码
    /**
     * JDBC查询程序
     */
    @Test
    public void testSelect() throws Exception {
        //1. 注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");

        //2. 获取数据库连接
        String url = "jdbc:mysql://localhost:3306/web01";
        String username = "root";
        String password = "123456";
        Connection connection = DriverManager.getConnection(url, username, password);

        //3. 定义SQL语句
        String sql = "select id,username,password,name,age from user where username = 'daqiao' and password = '123456'";

        //4. 获取SQL语句执行对象
        Statement statement = connection.createStatement();

        //5. 执行SQL查询,返回结果集
        ResultSet resultSet = statement.executeQuery(sql);

        //6. 处理结果集
        while (resultSet.next()) {
            //获取每一列的值
            int id = resultSet.getInt("id");
            String user = resultSet.getString("username");
            String pwd = resultSet.getString("password");
            String name = resultSet.getString("name");
            int age = resultSet.getInt("age");

            //创建User对象并封装数据
            User userObj = new User(id, user, pwd, name, age);

            //输出User对象信息
            System.out.println(userObj);
        }

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

预编译SQL

优势一:可以防止SQL注入,更安全

**SQL注入:**通过控制输入来修改事先定义好的SQL语句,以达到代码对服务器进行攻击的方法

优势二:性能更高

Mybatis

Mybatis是一款优秀的持久层框架,用于简化JDBC的开发

使用Mybatis查询所有用户数据

辅助配置-配置SQL提示

**产生原因:**idea和数据库没有建立连接,不识别表信息

**解决方式:**在idea中配置MySQL数据库连接

辅助配置-配置Mybatis的日志输出

默认情况下,在Mybatis中,SQL语句执行时,我们并看不到SQL语句的执行日志。加入如下配置,即可查看日志:

JDBC VS Mybatis

数据库连接池

  • 数据库连接池是个容器,负责分配、管理数据库连接(Connection)
  • 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
  • 释放空闲空间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏
优势

1、资源重用

2、提升系统响应速度

3、避免数据库连接遗漏

标准接口:DataSource

官方提供的数据库连接池接口,由第三方组织实现此接口

功能:获取连接

Connection getConnection()throws SQLException;

常见产品

Druid(德鲁伊)

  • Druid连接池是阿里巴巴开源的数据库连接池项目
  • 功能强大,性能优秀,是Java语言最好的数据库连接池之一
切换数据库连接池

增删改查操作

删除用户-delete

需求:根据ID删除用户信息

SQL:delete from user where id = 5;

Mapper接口:

DML语句执行完毕的返回值,表示该DML语句执行完毕影响的行数

Mybatis中的#号与$号:

新增用户-insert

需求:添加一个用户

SQL:insert into user(username,password,name,age) values ('zhouyu','123456','周瑜',20);

Mapper接口:

修改用户-update

需求:根据ID更新用户信息

SQL:update user set username = 'zhouyu',password = '123456',name = '周瑜',age = 20) where id = 1;

Mapper接口:

查询用户-select

需求:根据用户名和密码查询用户信息

SQL:select * from user where username = 'zhouyu' and password = '888666';

Mapper接口:

@Param注解的作用是为接口的方法形参起名字的

XML映射配置

在Mybatis中,既可以通过注解配置SQL语句也可以通过XML配置文件配置SQL语句

默认规则

1、XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)

2、XML映射文件的namespace属性为Mapper接口全限定名一致

3、XML映射文件中sql语句与Mapper接口中的方法名一致,并保持返回类型一致

XML映射文件-辅助配置

配置XML映射文件的位置:

MybatisX 是一款基于IDEA的快速开发Mybatis的插件,为效率而生

SpringBoot配置文件

SpringBoot项目提供了多种属性配置方式(properties、yaml、yml)

yaml配置文件

格式:

  • 数值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系,缩进时,不允许使用tab键,只能用空格(idea中会自动将tab转换为空格)
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • #表示注释,从这个字符一直到行尾,都会被解析器忽略

定义对象/Map集合:

定义数组/List/Set集合:

在yaml格式的配置文件中,如果配置项的值是以0开头的,需要使用''引起来,因为以0开头在yml中表示8进制的数据

练习:在application.yml配置文件中配置相关的配置项

java 复制代码
spring:
  application:
    name: springboot-mybatis-quickstart
  #数据库的连接信息
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/web01
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:mapper/*.xml
相关推荐
cookqq1 天前
MySQL 5.7 大表删除部分数据:.ibd 文件会变小吗?磁盘会释放吗?
数据结构·数据库·mysql
IT 行者1 天前
告别硬编码!Spring Boot 优雅实现 Controller 路径前缀统一管理
数据库·spring boot·python
曹牧1 天前
Oracle 大表数据分区存储
数据库·oracle
win x1 天前
Redis 持久化
数据库·redis·缓存
程序猿20231 天前
MySQL的锁(行锁)
数据库·mysql
while(1){yan}1 天前
图书管理系统(超详细版)
spring boot·spring·java-ee·tomcat·log4j·maven·mybatis
W001hhh1 天前
数据库实训Day005下午
数据库
lechcat1 天前
多角色协同巡检流程设计技术教程
大数据·数据库·数据挖掘
小沈同学呀1 天前
基于时间片划分的提醒算法设计与实现
服务器·数据库·算法