08-web实战-java操作数据库

1. JDBC

数据库操作技术,市场占比:

1.1. 概述

Mysql 8 的驱动包是 mysql-connector-java. jar jar 包存在于运行时。(编译时不需要)

1.2. 快速入门

com.mysql.cj.jdbc.mysql

步骤:

  1. 注册驱动
  2. 获取连接
  3. 获取执行对象
  4. 执行 SQL
  5. 释放资源

1.3. 常见错误

异常,从上往下看,自己写一个异常,实践下。 #TODO

2. JDBC 的 API 详解

2.1. DriverManager

DriverManager 用来注册驱动,获取数据库连接。

SPI 机制

assets/03-web/08-web实战-java操作数据库/IMG-20250521-165447-889.png

Important

全类名、全限定名? 记个标准的叫法。

2.2. Connection 和 Statement

executeUpdate(sql) 返回 int
executeQuery(sql) 返回 ResultSet

[Prepared]Statement [预编译]

2.3. ResultSet

next()
getXxx()
getInt()
getString()

2.4. ResultSet 参数化测试

#TODO

@CsvSource ({"x","2"})

2.5. PreparedStatement 和 SQL 注入

预编译 SQL,能防止 SQL 注入。


"select * from t_user where id = "tom" and password = "传入的字符串" ;
如果字符串是:" or "1" = "1
字符串拼接结果:
"select * from t_user where id = "tom" and password = "" or "1" = "1" ;

Important

or 和 and 在 SQL 的顺序
关联 SQL 查询

联想当 mybatis 面试题

${} 和 #{}  后者是预编译SQL;字符串拼接,占位符替换。

2.6. 预编译 SQL 的好处

安全,同时性能更好了。

3. Mybatis 基础

3.1. 介绍

DAO (Data Access Object)数据访问对象。

3.2. 快速入门

IDEA 插件- grep console



3.3. 辅助配置

IDEA 中 mapper 接口的注解中写 sql 时候,没有提示,右键,注入 sql 选 MySQL 就可以了。

Mybatis 日志配置,Yml 中配置 mybatis.configuration.log-impl:Stdout 控制台输出。

3.4. JDBC 对比 Mybatis

@Mapper 注解了接口。程序启动,框架生成 mapper 接口的代理对象,放 IOC 容器里。

3.5. 数据库连接池

Sun 官方接口是 DataSource,由第三方实现。SPI

配置 spring.datasource.type=

3.6. XML 映射文件

写 sql 的地方

要求:

资源目录创建文件夹,要一级一级的分别创建

3.7. MybatisX 插件和映射路径的配置

复杂 sql 用 xml。简单 sql的用注解。

没同包的化,指定 xml 位置。
mybatis. mapper-locations=classpath: mapper/*.xml

classes 文件夹下的 mapper 文件夹。

3.8. 部门列表查询-集成 Mybatis


3.9. 部门列表查询-数据封装

sql 的字段和 java 的 field 不一致怎么办?

//1.手动结果映射
@Results({
    @Result(column="create_time",property="createTime")
})
//2.sql 起别名
//3.全局配置 开启驼峰命名

开启驼峰命名
mybatis.configuration.map-underscore-to-camel-case=true

4. 疑问

上一节:07-web实战-数据库

下一节:09-web实战-部门管理