OLTP(业务)—使用java代码操作数据库

数据库的主要使用场景:
1)OLTP:事务处理(发表文章、写作业、批改作业...CURD都有)

2)OLAP:事务分析(某班共写了多少作业、完成率、CSDN用户增长数...一次涉及众多数据,一般仅查询,很少修改)

目录

一、OLTP-使用java代码操作数据库

1.pom.xml:项目的配置文件

1)POM(Project Object Model)工程对象模型

2)xml (exention Markup Language) 扩展标记性语言,是一种语言结构

2.展示数据库中的库名

三.JDBC:java数据库的连接组件

1.配置

客户端连接服务器(告诉客户端,如何找到网络中的服务器进程)

2.JDBC的使用

1)创建数据库连接Connection(得到Connection对象)

2)得到语句(Statement)对象【带结果集或不带结果集的SQL语句】

 4)遍历结果集(ResultSet);executeQuery:执行查询

JDBC使用步骤总结

3.三方

4.CURD操作

1)CURD

2) 如何使用动态SQL【占位符 ?的使用】

3)插入后如何得到一个自增id

四、利用JDBC实现图书管理系统

1.查询书籍并上架:

2.下架书籍

3.用户借阅书籍

对上述代码优化(通过对象封装关联数据—面向对象思想)

4.Java中日期相关的类和方法

3.带密码的登录认证


一、OLTP-使用java代码操作数据库

1.pom.xml:项目的配置文件

maven工具:项目构建工具

1)POM(Project Object Model)工程对象模型

      理解:把整个工程的构建过程抽象成一个对象,既然有对象就应该把数据等关联起来

2)xml (exention Markup Language) 扩展标记性语言,是一种语言结构

      xml是用文本表示树型结构。假设有这样一棵树:

文本表示:

      把上图设置好后点m的小图标maven或者右键Maven让maven-Reaload project加载一下本次修改的内容。加载完后external libraries中会看到Maven....这个库的出现【library:库;external library表示我们需要依赖的第三方库有哪些】。

//pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wy</groupId>
    <artifactId>pro-1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 项目的一些基本属性 -->
    <properties>
        <!-- compiler:编译器;source:源。maven的源是1.8版本,目标是1.8版本 -->
        <!-- 整个编译交给maven处理,所以需要告诉maven选择编译器时把源码当作哪个版本编译 -->
        <!-- source1.8是把java文件当成java1.8版本使用,target1.8是编译出的类文件按照1.8版本编译 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <!-- dependencies:依赖。开始引入第三方库,项目运行,需要依赖第三方代码,一个项目中可以依赖很多第三方 -->
    <dependencies>
        <!-- 具体第三方开始写.<groupId>,artifactId,version可以唯一确定一个第三方 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>
    </dependencies>

</project>

2.展示数据库中的库名

package com.wy;

import com.mysql.cj.jdbc.MysqlDataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author 美女
 * @date 2022/04/05 23:22
 **/
public class Demo1 {
    public static void main(String[] args) throws SQLException {
        //show database(展示当前mysql服务器上有多少个库)
        MysqlDataSource db=new MysqlDataSource();
        db.setServerName("localhost");
        db.setPort(3306);
        db.setUser("root");
        db.setPassword("xxxxxxxxx");
        db.setUseSSL(false);
        db.setCharacterEncoding("utf-8");
        db.setServerTimezone("Asia/Shanghai");
        /**
         * 上面是配置-java代码写出的mysql客户端
         */
        try (Connection c=db.getConnection()){
            try(PreparedStatement ps=c.prepareStatement("show databases")){
                try(ResultSet rs=ps.executeQuery()){
                    while(rs.next()){
                        String name=rs.getString(1);
                        System.out.println(name);//一行打一个名字
                    }
                }
            }
        }
    }
}

三.JDBC:java数据库的连接组件

     (Java Database Connectivity) 所有数据库都可以用这套方式连接

1.配置

客户端连接服务器(告诉客户端,如何找到网络中的服务器进程)

      类比保存电话联系人信息

1.找到是网络中的哪台主机(host,哪台电脑)--默认通过ip地址/域名【127.0.0.1/localhost 本机上】去找。

2.第二步,端口(port,一个专门的标识符,在电脑上跑的众多程序中精准找到对应程序)。3306端口等。mysql服务器就相当于摆摊的,找到3306摊位摆好摊了,然后等待人来买东西。客户端就相当于找它(服务器)买东西的人,所以就要告诉客户端怎么找到这个摊位,去127.0.0.1这个城市3306这个摊位就找到了。如果服务器没启动,即到那个摊位发现没出摊,就会搜寻失败。

即:

  db.setServerName("localhost");
  db.setPort(3306);

3.告诉服务器我们是谁

 db.setUser("root");
 db.setPassword("xxxxxxxxx"); 

4. 配置其他内容

 db.setUseSSL(false);
 db.setCharacterEncoding("utf-8");
 db.setServerTimezone("Asia/Shanghai");

整块代码:

  public static void main(String[] args) throws SQLException {
        MysqlDataSource db=new MysqlDataSource();
        db.setServerName("localhost");
        db.setPort(3306);
        db.setUser("root");
        db.setPassword("xxxxxxxxx");

        db.setDatabaseName("java_lib");//设置默认库

        db.setUseSSL(false);
        db.setCharacterEncoding("utf-8");
        db.setServerTimezone("Asia/Shanghai");
        /**
         * 上面是配置-java代码写出的mysql客户端
         */
    }

即:【通过DataSource方式

public class DBUtil {
    //由于mysql的对象只需要一份,一个static就够了
    private static final DataSource dataSource;
    static {
        MysqlDataSource db=new MysqlDataSource();
        db.setDatabaseName("localhost");
        db.setPort(3306);
        db.setUser("root");
        db.setPassword("xxxxxxxxx");
        db.setDatabaseName("java_lib");
        try {
            db.setUseSSL(false);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            db.setCharacterEncoding("utf-8");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            db.setServerTimezone("Asia/Shanghai");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        dataSource=db;
    }
    public static Connection connection() throws SQLException{
        return dataSource.getConnection();
    }
}

也可以写成:

public class DButil {
    private static final DataSource dataSource;
    static {
        MysqlDataSource db=new MysqlDataSource();
        String url="jdbc:mysql://localhost:3306/java_lib?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
        db.setUrl(url);
        db.setUser("root");
        db.setPassword("xxxxxx");
        dataSource=db;
    }
    public static Connection connection() throws SQLException{
        return dataSource.getConnection();
    }
}

2.JDBC的使用

1)创建数据库连接Connection(得到Connection对象)

      上面配置中已经创建好了数据库及配置条件,现在进行连接操作得到Connection对象:

      类比打通电话了

a.

try ( Connection  c = db.getConnection() ) {

}

等价于:

b.也可以通过DriverManager方式

2)得到语句(Statement)对象【带结果集或不带结果集的SQL语句】

      类比要说的话

a.带结果集的SQL语

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值