关于mysql,需要掌握的基础(二):JDBC和DAO层
目录
2、加载注册驱动:为什么Class.forName(“com.mysql.jdbc.Driver”); 一行代码就可以完成加载、注册驱动操作?
7、语句对象PreparedStatement 和Statement 的比较:
9、掌握连接池(也叫数据源DataSource)-获取连接对象
jdbc封装的dao层的模板类jdbcTemplate来操作数据库:
关于mysql,需要掌握的基础(二):JDBC和DAO层
1、了解jdbc是什么?
■ java DataBase Connectivity,java连接数据库,通过java代码操作数据库,可以进行CRUD
执行SQL语句的java API,JDBC 本身是java连接数据库的一个标准,【需要加载连接驱动程序-连接数据库的jar包】,jdbc是进行数据库连接的抽象层,由java编写的一组类和接口组成,接口的实现由各个数据库厂商来完成。
2、加载注册驱动:为什么Class.forName(“com.mysql.jdbc.Driver”); 一行代码就可以完成加载、注册驱动操作?
① Class.forName(); 会把com.mysql.jdbc.Driver 这份字节码
② 当一份字节码别加载进JVM时,就会执行该字节码中的静态代码块,在该静态代码块中有: java.sql.DriverManager.
3、原始方式-获取连接对象:
1):加载注册驱动:
Class.forName(“com.mysql.jdbc.Driver”);
2):获取连接:通过DriverManger类的getConnection方法来获取连接对象:
Connection conn = DriverManger.getConnection(url,username, password);
4、JDBC 操作数据库的步骤:【贾琏欲执事】
1)贾:加载注册驱动
2)琏:获取连接对象
3)欲:创建语句对象
4)执:执行SQL语句
5)事:释放资源
5、了解DAO层是什么?
■ Data Access Object 数据访问对象,跟jdbc一样本身是一个接口,封装了数据的增删改查(CRUD)操作。
6、DAO诞生的背景:
■ 以前我们是把数据库的操作代码编写到客户端里:
①跟业务代码混杂在一起;②而且每次操作数据库时都需要重复书写代码。
■ DAO封装了数据的增删改操作,数据访问接口。
7、语句对象PreparedStatement 和Statement 的比较:
■ 拼接sql方面和安全方面【注入问题】
8、开发中获取自动生成主键:
■ 获取主键的作用:
---注册时,一次性填写过多信息,不友好,分成两次填写呗【**获取主键,将其传递给第二个填写注册信息界面**】
■ 原始方式-获取主键:
Statement st = null;
st.executeUpdate(sql.toString(), Statement.RETURN_GENERATED_KEYS);
//去获取自动生成的主键
ResultSet keyRs = st.getGeneratedKeys();
if(keyRs.next()) {
Long id = keyRs.getLong(1);//获取第一列
System.out.println(id);
return id;
}
9、掌握连接池(也叫数据源DataSource)-获取连接对象
■常用的连接池中的druid(德鲁伊):阿里巴巴提供的,号称世界最好的连接池
✿ 从jdbc—》dao层—》myBatis:
jdbc封装的dao层的模板类jdbcTemplate来操作数据库:
//增删改操作模板: public static update(String sql, Object...params)
//查询操作模板:public static <T> T query(String sql, IResultSetHandler rsh,Object...params)
//-----------------------------------------------------------------------------
//还封装了BeanHandler、BeanListHandler
BeanHandler 处理结果类[结果集只有一行数据,把一行结果集数据封装成一个对象]
BeanListHandler 处理结果类[结果集有多行数据,把每一行结果集数据封装成一个对象,存储到List集合中]
● 使用BeanHandler和BeanListHandler要注意,对象的属性名和表中的列名需要相同,不同报错。
■ jdbc--->jdbc模板(通用结果集处理器[需要保证类的属性名和表名相同])----》ORM框架(MyBatis框架)
关于mysql,需要掌握的基础(二):JDBC和DAO层的更多相关文章
- Java通过JDBC 进行Dao层的封装
前言 前面有一章节,我专门讲解了Java通过JDBC 进行MySQL数据库操作,这主要讲解了MySQL数据库的连接和简单的操作,但是在真正的Java项目中,我们要不断的和数据库打交道,为了提高数据库操 ...
- sping整合hibernate之二:dao层开发
在上一篇日志中将hibernate的会话工厂sessionFactory注入到了spring的容器中,但这样还不够,因为hibernate的增删改查是要使用事务机制的, 所以还要在spring中配置 ...
- jdbc基础 (二) 通过properties配置文件连接数据库
csdn博文地址:jdbc基础 (二) 通过properties配置文件连接数据库 上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用. 因为jdbc对数据库的驱动加载.连接 ...
- 02 mysql 基础二 (进阶)
mysql 基础二 阶段一 表约束 1.not null 非空约束 例子: create table tb1( id int, name varchar(20) not null ); 注意 空字符不 ...
- 数据库及MYSQL基础(3)-JDBC
教学视频链接:https://edu.aliyun.com/course/1694?spm=5176.11400004.0.0.29254768sg2H5P 程序文件链接:https://pan.ba ...
- 写给自己看的Linux运维基础(二) - Apache/MySQL. 安全设置. 定时任务
本文使用环境为CentOS 6 Apache, PHP, MySQL等常用软件均可通过yum安装包获取 yum install httpd php mysql-server # mysql: 客户端; ...
- java基础(11) -JDBC
java基础(11) -JDBC jdbc 1.装载驱动 载入跟数据库建立连接的驱动 /* sql server: String className ="com.microsoft.sqls ...
- MySQL中索引的基础知识
本文是关于MySQL中索引的基础知识.主要讲了索引的意义与原理.创建与删除的操作.并未涉及到索引的数据结构.高性能策略等. 一.概述 1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能. 数 ...
- Java数据库基础(JDBC)
JDBC(Java Data Base Connectivity):SUN公司为了简化统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC: 这样应用程序就不需要关注数据库底层的详细 ...
随机推荐
- 破解UltraEdit64 Version 28.20.0.92 技术分享。
本文为原创作品,转载请注明出处,作者:Chris.xisaer E-mail:69920579@qq.com QQ群3244694 补丁程序下载地址:https://download.csdn.net ...
- rsync 守护进程及实时同步
目录 rsync 守护进程及实时同步 rsync简介 rsync特性 rsync应用场景 cp命令 scp命令 rsync的传输方式 rsync的传输模式 rsync实际使用 rsync命令 案例 r ...
- golang(gin框架),基于RESTFUL的跨语言远程通信尝试
golang(gin框架),基于RESTFUL的跨语言远程通信尝试 背景: 在今年的项目实训过程中,遇到了这样的问题: 企业老师讲课实用的技术栈是Java springboot. 实训实际给我们讲课以 ...
- 编写Java程序,实现客户端向服务端上传文件的功能
查看本章节 查看作业目录 需求说明: 实现客户端向服务端上传文件的功能 当启动服务端后,运行客户端程序,系统提示客户在客户端输入上传文件的完整路径.当客户在客户端输入完成后,服务端实现文件上传 实现思 ...
- WiFi6模块 RW6852-PCIE
RW6852-PCIE是一款高度集成的模块,支持2T2R 802.11ax解决方案,具有MU-MIMO.无线LAN (WLAN) PCI Express网络接口控制器和HS-UART混合接口.它结合了 ...
- CSS实战 模拟 新闻列表
总结:所使用的知识点:1.padding应用以及box-sizing: border-box自动内减撑大的盒子 2.ul>li 的使用,去除黑圆圈 3.a标签的使用,去除默认样式<下划线& ...
- 关于Mysql的Qcache优化
query_cache_size = 64M 指定MySQL查询缓冲区的大小.可以通过在MySQL控制台执行以下命令观察:# > SHOW VARIABLES LIKE '%query_cach ...
- javascript中new url()属性,轻松解析url地址
1.首先写一个假的地址(q=URLUtils.searchParams&topic=api)相当于当前的window.location.href const urlParams = new U ...
- 简单的树莓派4b装64位系统+docker和docker-compose
起因是这样的,我系统崩了 事先准备 wifi或网线 树莓派和电源 内存卡和读卡器 首先是装系统 去https://downloads.raspberrypi.org/raspios_arm64/ima ...
- Nacos配置管理最佳实践
Nacos一个最常用的功能就是配置中心,在具体使用时往往是多个团队,甚至整个公司的研发团队都使用同一个Nacos服务.那么使用时如何保证配置在各个团队之间的隔离,又能保证配置管理的便捷性?下面就来介绍 ...