第一节 为什么使用mybatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
JDBC缺点数据库信息硬编码,创建与释放连接频繁sql语句设置参数复杂,获取结果硬编码问题封装返回结果集较为繁琐 。解决思路,使用配置文件、连接池、反射和内省解决相关问题。
所以学习Mybatis是为了解决传统JDBC的复杂的操作,提高工作效率和代码性能。
JDBC 执行步骤
- 加载数据库驱动
- 创建并获取数据库链接
- 创建jdbc statement对象
- 设置sql语句
- 设置sql语句中的参数(使用preparedStatement)
- 通过statement执行sql并获取结果
- 对sql执行结果进行解析
- 释放资源,包括resultSet、preparedStatement、connection
从下边的代码可以看出
public class MainTest {
public static void main(String[] args) {
String driveName = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8";
String user = "root";
String pass = "123456";
// java.sql中 Connection 与特定数据库连接,在连接上下文中执行sql语句并返回结果
Connection connection = null;
PreparedStatement preparedStatement= null;
ResultSet resultSet =null;
try {
//加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//通过驱动管理类获取数据库链接
connection = DriverManager.getConnection(url, user, pass);
//定义sql语句 ?表示占位符
String sql = "select * from stuInfo where id = ?";
//获取预处理statement
preparedStatement = connection.prepareStatement(sql);
//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
preparedStatement.setString(1, "1");
//向数据库发出sql执行查询,查询出结果集
resultSet = preparedStatement.executeQuery();
//遍历查询结果集
while(resultSet.next()){
System.out.println(resultSet.getString("id")+" "+resultSet.getString("name"));
}
} 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();
}
}
}
}
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END