1.数据库(3天)
怎么使用Java语言对数据库实现增删改查?
jdbc:拓展性 灵活性比较差
使用Java语言,连接数据库,对数据表进行管理和操作(CRUD)
Java中的jdbc:提供一套api,使用这套api实现对数据的操作
Java jdbc 的本质:仅仅定义的是一套接口
preparedStatement 接口
connection 接口
statement接口
resultset接口
具体的实现类:有各个数据库厂商提供,可以操纵不同类型的关系型数据库 去下载jar包(驱动包)
main(){//查询mysql数据库中指定数据表中的所有数据
//看不到mysql的任何一个api实现类
//操作的全部都是jdk中提供的接口api
}
1.创建Java项目
jdbc_quickstart 项目
2.下载mysql数据库厂商提供的驱动包 jar包
jar包的仓库 方便
3.将我们的驱动包导入到当前项目中的
操作 看博客 as lib
4.创建数据库/表
思想:面向接口编程
5.编码:
注册驱动mysql驱动对象
获取mysql数据库连接的connection对象(驱动管理器的集合当中的对象,返回的是连接的对象)
编写mysql语句
获取能够发送sql语句的对象statement
通过statement对象发送sql语句
接收mysql的处理结果
释放资源
1.注册数据库驱动
DriverMananger.registerDriver(new Driver());
2.获取数据库的连接对象
connection conn = DriverManager.getConnection(url"jdbc:mysql://127.0.0.1:3386/reggie",user"",password"");
3.编写sql语句
string queryString = "delete from user where name = "王阿姨";
4.获取发送sql对象
coon.creatstatement();
5.发送sql语句
statement。executeUpdate(sql)
6.处理结果
sout (count > 0 ?"","")
7.释放资源
建立连接————————mysql
编写的sql语句发送给mysql
class forname ("com.mysql.jdbc.Driver") 类加载器加载到内存
管理各个数据库驱动对象
注册驱动,管理注册的驱动:registerDriver(驱动对象)
获取Connection数据库连接对象 getConnection 提供了 数据库连接方法 通过注册的驱动包
***自动装配:springboot 里面就有***
***导的jar包的里面配置了一个驱动 反射 驱动包提供了这样的一个文件 services项目包下 meta-info services Java.sql.driver 配置驱动的路径 (可以不用手动的注册)
***
DriverManager.getconnection("jdbc:mysql:///reggie?user = root&password = 1234");
//多个参数用& 隔开
new properties;
prop.setproperty("user","xxx")
.....
DriverManager.getConnection("jdbc:mysql:///reggie",properties)
demo:
connectionTCL:事务管理
1.开启事务:关闭自动提交、
coon.setAutoCommit(false);---手动提交
2.使用try---(coon.commit) ---catch ---- (conn.rollback)
staement作用:
int count = statement.executeUpdate(sql)
resultset = statement.executeQuery(sql);
处理结果
if(rs.next()){
object id = rs.getobject(“id”);
sout(id);
}
jdbc的单元测试
junit.jar 包
@test
public void insertTest(){
System.out.println("执行sql语句");
}
如何获取ResultSet封装的数据?
rs提供的方法----next()方法---- 返回的是boolean类型的结果
if(result){
rs.getxxx
知道当前的类型也可以直接.getstring()
1. rs,getobject(index)
2. rs.getobject(columName) 根据当前列的名称
}
在外面创建一个实体(entity)类
查询有哪些属性
介绍一个操作:
快捷键的使用 : alt + 鼠标右键 Edit —————— find ----- repalce
创建get set tostring
进行优化 ---- 代码
创建一个集合 List users = new ArrayList<>();
创建一个对象 new user();
user.getclass();
getFields;
for 遍历
getDeclarrdFields ---- 反射
user.setid()
next()
getObject(“index”)
getObject(“coname”)
statement 存在的问题 就是sql注入 所以推荐使用 preparestatement
1.接收用户输入的用户名和密码
string username= "";
string password = "";
2.使用jdbc
2.1获取数据库连接对象
DriverManager.getconnection();
2.2编写sql语句
string querystr = "";
2.3获取statement对象,并发送sql
coon.creatstatement();
stat.exexuteQuery(sql);
2.4接收结果
if(rs.next()){
登陆成功
}else{
登陆失败
}
3.释放资源
.close();
出现的问题:
字符串 ''的问题
什么是sql注入?
ccsacac'or '1=1
进行预编译操作 速度更快 ?user =(true)
要进行占位符的设置
setstring(索引,参数)
sql怎么避免的?
原理:
获取psate预编译
如果执行的是查询操作:conn.pst 对象 一定要记得补全占位符
pst.setstring(Java.lan类型) 默认的是int 类型 如果数据量比较打的话要改成L
入门案例重新写一下啊!!!!!!!!!!!!!!
DriverManager.getConnection 获取数据库连接对象
当前的位置创建和数据库的连接 下一次创建连接对象还要耗时 socket、编程还要加上io
—解决方法 池化思想 数据连接池 创建一个池子 维护一个连接池的集合 先维护好几个连接 要进行sql连接 现场用现场接收 归还连接对象到连接池对象 – -比如说有线的电话 --数据库连接池
数据库中怎么使用数据库连接池----面向接口的连接思想
DataSource 接口
jar包 比较主流的 德鲁伊 druid---- Druid 连接池 阿里巴巴
使用过程:
连接池工厂对象:DruidDataSourceFactory.create
createdatasource
new prop 对象
加载 load(new fileinputstream(“相对路径或者绝对路径”))
//获取数据库连接池 通过数据库连接池的工厂
//从数据库连接
jdbc流程:
连接池:
配合;连接池
sout(system.getproperty(“usrer.dir”))//获取当前用户所在的路径
//加载 属性文件中数据连接池的配置信息 到properties对象中
//数据库连接池工厂对象,加载属性文件中的参数,构建连接池对象()
//从连接池中获取一个连接对象
作用:
提升sql操作的执行效率
连接对象的复用
超时不等待
tb_brand品牌表
作业:
mybatis:对原生代码进行封装,提升效率 底层就是jdbc
spingboot:
2.后台
3.前端