“入门:Mybatis”的版本间差异
跳到导航
跳到搜索
无编辑摘要 |
(→关于JDBC) |
||
第2行: | 第2行: | ||
== 关于JDBC == | == 关于JDBC == | ||
=== 依赖包 === | |||
* mysql-connector-java-5.1.7-bin.jar:Mysql驱动 | |||
* ojdbc14-10.2.0.1.0.jar:Oracle驱动 | |||
=== JDBC步骤 === | |||
# 加载数据库驱动; | |||
# 创建并获取数据库链接; | |||
# 创建statement对象; | |||
# 编写sql语句; | |||
# 设置sql语句中的参数(使用preparedStatement); | |||
# 通过statement执行sql并获取结果; | |||
# 对sql执行结果进行解析处理; | |||
# 释放资源(resultSet、preparedstatement、connection); | |||
=== JDBC代码 === | |||
<syntaxhighlight lang="java"> | |||
package cn.xxx.jdbc; | |||
import java.sql.Connection; | |||
import java.sql.DriverManager; | |||
import java.sql.PreparedStatement; | |||
import java.sql.ResultSet; | |||
import java.sql.SQLException; | |||
public class JdbcTest { | |||
public static void main(String[] args) { | |||
//数据库连接 | |||
Connection connection = null; | |||
//预编译的Statement,使用预编译的Statement提高数据库性能 | |||
PreparedStatement preparedStatement = null; | |||
//结果集 | |||
ResultSet resultSet = null; | |||
try { | |||
//加载数据库驱动 | |||
Class.forName("com.mysql.jdbc.Driver"); | |||
//通过驱动管理类获取数据库链接 | |||
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "admin"); | |||
//定义sql语句 ?表示占位符 | |||
String sql = "select * from user where username = ?"; | |||
//获取预处理statement | |||
preparedStatement = connection.prepareStatement(sql); | |||
//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值 | |||
preparedStatement.setString(1, "王五"); | |||
//向数据库发出sql执行查询,查询出结果集 | |||
resultSet = preparedStatement.executeQuery(); | |||
//遍历查询结果集 | |||
while(resultSet.next()){ | |||
System.out.println(resultSet.getString("id")+" "+resultSet.getString("username")); | |||
} | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
}finally{ | |||
//释放资源 | |||
if(resultSet!=null){ | |||
try { | |||
resultSet.close(); | |||
} catch (SQLException e) { | |||
// TODO Auto-generated catch block | |||
e.printStackTrace(); | |||
} | |||
} | |||
if(preparedStatement!=null){ | |||
try { | |||
preparedStatement.close(); | |||
} catch (SQLException e) { | |||
// TODO Auto-generated catch block | |||
e.printStackTrace(); | |||
} | |||
} | |||
if(connection!=null){ | |||
try { | |||
connection.close(); | |||
} catch (SQLException e) { | |||
// TODO Auto-generated catch block | |||
e.printStackTrace(); | |||
} | |||
} | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
=== JDBC问题 === | |||
# 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。 | |||
# 采用硬编码方式,不能灵活操作数据库,代码不易维护。 | |||
#: sql语句、查询条件、preparedStatement向占有位符号传参数、结果集解析,均是硬编码方式写入代码; | |||
== Mybatis == | == Mybatis == |
2020年10月7日 (三) 18:28的版本
关于JDBC
依赖包
- mysql-connector-java-5.1.7-bin.jar:Mysql驱动
- ojdbc14-10.2.0.1.0.jar:Oracle驱动
JDBC步骤
- 加载数据库驱动;
- 创建并获取数据库链接;
- 创建statement对象;
- 编写sql语句;
- 设置sql语句中的参数(使用preparedStatement);
- 通过statement执行sql并获取结果;
- 对sql执行结果进行解析处理;
- 释放资源(resultSet、preparedstatement、connection);
JDBC代码
package cn.xxx.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JdbcTest {
public static void main(String[] args) {
//数据库连接
Connection connection = null;
//预编译的Statement,使用预编译的Statement提高数据库性能
PreparedStatement preparedStatement = null;
//结果集
ResultSet resultSet = null;
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//通过驱动管理类获取数据库链接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "admin");
//定义sql语句 ?表示占位符
String sql = "select * from user where username = ?";
//获取预处理statement
preparedStatement = connection.prepareStatement(sql);
//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
preparedStatement.setString(1, "王五");
//向数据库发出sql执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
//遍历查询结果集
while(resultSet.next()){
System.out.println(resultSet.getString("id")+" "+resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//释放资源
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
JDBC问题
- 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
- 采用硬编码方式,不能灵活操作数据库,代码不易维护。
- sql语句、查询条件、preparedStatement向占有位符号传参数、结果集解析,均是硬编码方式写入代码;