Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站
JavaWeb:是用Java技术来解决相关web互联网领域的技术栈
优点:
1.都是使用表结构,格式一致,易于维护
2.使用通用的SQL语言操作,使用方便,可用于复杂查询
3.数据存储在磁盘中,安全
DDL:操作数据库,表等
DML:对表中的数据进行增删改
DQL:对表中的数据进行查询
DCL:对数据库进行权限控制
JDBC概念:
JDBC 就是使用Java语言操作关系型数据库的一套API
全称:( Java DataBase Connectivity ) Java 数据库连接
JDBC好处:
各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
可随时替换底层数据库,访问数据库的Java代码基本不变
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JDBCDemo {
public static void main(String[] args) throws Exception {
//1,注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2,获取连接
String url="jdbc:mysql://127.0.0.1:3306/db1";
String username="root";
String password="111111";
Connection conn= DriverManager.getConnection(url,username,password);
//3,定义sql
String sql="update dept set money = 2000 where id =1 ";
//4,获取sql对象
Statement stmt =conn.createStatement();
//5,执行sql
int count =stmt.executeUpdate(sql);//影响的行数
//6,处理结果
System.out.println(count);
//7.释放资源
stmt.close();
conn.close();
}
}
作用:
作用:
1,普通执行SQL对象
statement createStatement()
2,预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement prepareStatement (sql)
3,执行存储过程的对象
CallableStatement prepareCall (sql)
开启事务: setAutoCommit(boolean autoCommit): true为自动提交事务;false为手动提交事务,即为开启事务
提交事务:commit()
回滚事务:rollback()
int executeUpdate(sql):执行DML、DDL语句
->返回值:(1) DML语句影响的行数(2) DDL语句执行后,执行成功也可能返回0
ResultSet executeQuery(sql):执行DQL语句
->返回值: ResultSet结果集对象
ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet对象
获取查询结果:
boolean next():(1)将光标从当前位置向前移动一行(2)判断当前行是否为有效行
返回值:
true:有效行,当前行有数据
false:无效行,当前行没有数据
while(resultSet.next()){///获取每一行
//获取每一列
int sid=resultSet.getInt("sid");
String sname=resultSet.getString("sname");
int age=resultSet.getInt("age");
System.out.println(sid+"\t"+sname+"\t"+age);
}
PreparedStatement作用:
1.预编译SQL语句并执行:预防SQL注入问题
SQL注入:SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法
String name="zhangsan";
String pwd="123";
String sql="select * from tb_user where username = ? and password = ? ";
PreparedStatement pstmt= conn.prepareStatement(sql);
pstmt.setString(1,name);
pstmt.setString(2,pwd);
ResultSet rs= pstmt.executeQuery();
PreparedStatement 原理:
1.在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)
2.执行时就不用再进行这些步骤了,速度更快
3.如果sql模板一样,则只需要进行一次检查、编译
好处:
资源重用
提升系统响应速度
避免数据库连接遗漏
标准接口:DataSource
官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接
功能:获取连接
Connection getConnection()
常见的数据库连接池:
DBCP
C3P0
Driud
主要功能:
提供了一套标准化的项目结构
提供了一套标准化的构建流程(编译,测试,打包,发布…...)
提供了一套依赖管理机制
Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档
仓库分类:
本地仓库:自己计算机上的一个目录
中央仓库:由Maven团队维护的全球唯一的仓库
远程仓库(私服):一般由公司团队搭建的私有仓库
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
1,如果有,则在项目直接引用;
2,如果没有,则去中央仓库中下载对应的jar包到本地仓库
还可以搭建远程仓库,将来jar包的查找顺序则变为:
本地仓库→远程仓库→中央仓库
compile :编译
clean:清理
test:测试
package:打包
install:安装
Maven构建项目生命周期描述的是一次构建过程经历经历了多少个事件
Maven对项目构建的生命周期划分为3套
clean:清理工作
default:核心工作,例如编译,测试,打包,安装等
site:产生报告,发布站点等
同一生命周期内,执行后边的命令,前边的所有命令会自动执行
Maven 中的坐标是资源的唯一标识
使用坐标来定义项目或引入项目中需要的依赖
Maven坐标主要组成:
groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如: com.itheima)
artifactld:定义当前Maven项目名称(通常是模块名称Ⅰ例如order-service.goods-service)
version:定义当前项目版本号
mysql
mysql-connector-java
8.0.33
依赖范围 | 编译classpath | 测试classpath | 运行classpath | 例子 |
compile | Y | Y | Y | logback |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
system | Y | Y | - | 存储在本地的jar包 |
inport | 引入DependencyManagement |