JDBC
概述
- JDBC:java数据库连接技术
- 特点:
- 是一种用于执行Sql语句的JavaAPI
- 可以为多种关系型数据库提供统一接口
- 它是由一组Java语言编写的类和接口组成
- 是java中访问数据库的标准规范
- 驱动
- Java提供访问数据库的一个规范,生产厂商提供规范的实现类称为驱动
- 每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库
JDBC操作过程
注册驱动
在项目的依赖中添加驱动jar包
在程序中注册驱动
Class.forName("驱动类完全限定名"); Class.forName("com.mysql.cj.jdbc.Driver");//mysql8的驱动 Class.forName("com.mysql.jdbc.Driver");//mysql8以下的驱动
获得到数据库的连接
jdbc规范规定url格式由三部分组成,每部分中间用冒号分隔
第一部分:jdbc,这是规定的
第二部分:数据库名称
第三部分:由数据库厂商规定,需要按照厂商要求编写
jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
得到连接
Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai", "root", "1"); connection.close();
获得执行sql语句的命令对象
Statement statement = connection.createStatement();
执行sql
int n = statement.executeUpdate(sql);//n表示影响数据库的行数
释放资源
statement.close(); connection.close();
处理结果集
ResultSet executeQuery(String sql):用来执行查询语句,得到结果集
- next():指针向下移动一个位置,如果有下一个位置返回true,没有返回false
- getXXX(int 列号):获取结果集当前行中列号对应的值,并转换为XXX类型(列号从1开始)
- getXXX(String 列名|列别名):获取结果集当前行,当前列名或列别名对应的值,并转为XXX的类型
PreparedStatement
该对象具有预先处理的功能,其执行速度要快于Statement,是接口,继承于Statement
能够避免sql注入式攻击
该接口提供了一套方法用于设置发送给数据库的sql语句占位符
- setXXX():XXX代表占位符的数据类型
PreparedStatement p = connection.prepareStatement(sql);//从连接对象中调用该方法,放回预处理对象
ResultSet rs = p.executeQuery();//不要再写入sql语句
事务管理
事务:一组SQL语句组成,把这些Sql语句看作一个整体处理,要么全部执行成功,要么全部执行不成功
步骤
取消自动提交
connection.setAutoCommit(false);//默认是true
提交事务
connection.commit();
回滚事务
connection.rollback();
项目
- Lombok
- 是一个java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释用来消除java类中大量的样板代码,仅五个字符(@Data)就可以替代百行代码从而产生干净整洁易于维护的java类
- 使用
- 在开发工具中安装Lombok插件(Idea中集成)
- 在项目中引入lombok.jar包
- 使用lombok注解
- jdbcTemplate
- 是Spring Framework提供的一个JDBC技术的简化封装工具,它可以帮助我们更方便地进项数据库操作。