Java语言怎样操作数据库
1.1:简述
sun公司为了帮助程序员更好的操作各种类型数据库。然后提供出统一的接口,我们只许需要调取接口就可以操作数据库,也就是传说的jdbc。这些接口由数据库驱动实现。
1.2:JDBC的具体实现
1.2.1:JDBC执行流程
- 加载驱动(前提要导入驱动)
- 获取连接(前提数据库账号、密码和名称)
- 对sql预编译(前提sql和参数)
- 对sql编译(前提参数拼接好的sql)
- 结果集遍历(只有查询的时候有这步操作)
- 释放资源(使用完要及时释放资源,因为这些资源不能重复利用)
1.2.2:JDBC代码具体实现
String url = "jdbc:mysql://127.0.0.1:3306/mydb2";
String user = "root";
String password = "root";
String sql = "insert into user(name,gender,salary) values(?,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//注册数据库驱动
Class.forName(driver);
//取得数据库连接
conn = DriverManager.getConnection(url, user, password);
//进行预编译,这里进行参数设置
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,"xiaozheng");
pstmt.setString(2,"男");
pstmt.setFloat(3,8000);
//进行编译
rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String gender = rs.getString("gender");
float salary = rs.getFloat("salary");
System.out.println(id + ":" + name + ":" + gender + ":"+ salary);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(rs!=null){//轻量级,创建和销毁rs所需要的时间和资源较小
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(stmt!=null){//轻量级,创建和销毁rs所需要的时间和资源较小
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(conn!=null){//重量级,创建和销毁rs所需要的时间和资源较小
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
1.2.3:JDBC出现出现问题
- 数据库频繁的创建链接和释放链接造成系统资源浪费从而影响系统性能。实用连接池可以解决。
- sql都硬编码到Java代码中,不易于后期维护。
- 向PreparedStatement设置参数,需要手动的设置参数。从resultset遍历结果集数据时,也存在硬编码 ,不利于后期系统的维护。
1.3:mybatis
1.3.1:mybatis简介
MyBatis是对JDBC进行了简单的封装,帮助用户进行SQL参数的自动设置,以及结果集与Java对象的自动映射。