MyBatis 学习笔记之 JDBC
前言
JDBC 概述:Java Database Connectivity ,是 sun 公司为了简化和统一 java 连接数据库定义的一套规范;JDBC 和数据库驱动的关系:接口(JDBC)和实现(驱动 jar)的关系;
JDBC 开发流程
注册驱动 DriverManger:DriverManager.registerDriver(new Driver());
建立连接 Connection
获取执行 SQL 语句的对象 Statement
执行 SQL 语句
处理结果
释放资源
DEMO
POM 依赖
代码示例
JDBC API 详解
java.sql.DriverManager
作用:主要是用于加载驱动,并且创建和数据库的连接;
注册驱动
翻阅源码发现,通过第一种方式注册驱动,会 new 两次,一次 new Driver(),一次 new DriverInfo(driver, da);所以推荐第二种方式方式注册驱动;
建立连接
jdbc:协议 mysql:子协议 192.168.5.129:主机名 3306:端口号 db_learn:数据库名
常见的几种数据库连接
MySql 写法:
jdbc:mysql://localhost:3306/sid
Oracle 写法:
jdbc:oracle:thin:@localhost:1521:sid
SqlServer 写法:
jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
java.sql.Connection
作用:接口的实现在数据库驱动中。所有与数据库交互都是基于连接对象的。
java.sql.Statement
ResultSet executeQuery(String sql):根据查询语句返回结果集。只能执行 select 语句;
int executeUpdate(String sql):根据执行的 DML(insert update delete)语句,返回受影响的行数;
boolean execute(String sql):此方法可以执行任意 sql 语句。返回 boolean 值,表示是否返回的是 ResultSet 结果集。仅当执行 select 语句,且有返回结果时返回 true,其它语句都返回 false;
java.sql.ResultSet
作用:封装结果集,查询结果表的对象。
提供一个游标,默认游标指向结果集第一行之前;
调用一次 next(),游标向下移动一行;
提供一些 getXXX 方法。XXX 代表的是数据类型;
ResultSet 接口常用 API
boolean next() : 将光标从当前位置向下移动一行;
XXX getXXX(int columnIndex) : 根据列的序号获取 XXX 类型的值,列的序号从 1 开始;
XXX getXXX(String columnName) : 根据列名去获取 XXX 类型的值;
void close() 关闭 ResultSet 对象;
SQL 注入问题解决:preparedStatement
什么是 SQL 注入 : SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为。preparedStatement 概述 : 预编译对象, 是 Statement 对象的子类。特点:
性能要高;
会把 SQL 语句先编译,格式固定好;
SQL 语句中的参数会发生变化,过滤掉用户输入的关键字(or);
DEMO
连接池
C3P0 连接池
C3P0 maven 地址:https://mvnrepository.com/artifact/com.mchange/c3p0
C3P0 官方下载地址:https://sourceforge.net/projects/c3p0/
C3P0 官方配置文档地址:https://www.mchange.com/projects/c3p0/#configuration_properties
DBCP 连接池
需要导入 commons-dbcp-xx.jar 和 commons-pool-xx.jar
DBCP maven 地址:https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2
DBCP 官方配置文档地址:https://commons.apache.org/proper/commons-dbcp/configuration.html
druid 连接池
druid 官网:https://druid.apache.org/
druid maven 地址:https://mvnrepository.com/artifact/com.alibaba/druid
druid 官网文档:https://druid.apache.org/docs/latest/design/
DbUtils
DbUtils 官网:https://commons.apache.org/proper/commons-dbutils/
DbUtis maven 地址:https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils
DbUtis 官方示例:https://commons.apache.org/proper/commons-dbutils/examples.html
版权声明: 本文为 InfoQ 作者【fly】的原创文章。
原文链接:【http://xie.infoq.cn/article/9c780cf052a5612555ffa355f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论