前言
日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习、记录Java如何使用原生JDBC操作数据库
代码编写
封装几个简单方法
find查询方法
findOne查询方法
execute执行方法
package cn.huanzi.qch.util;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
/**
* 原生jdbc操作数据库工具类
*/
public class DbUtil {
//数据库连接:地址、用户名、密码
private final String url;
private final String username;
private final String password;
//Connection连接实例
private Connection connection;
public DbUtil(String url, String username, String password){
this.url = url;
this.username = username;
this.password = password;
}
public DbUtil(String url, String username, String password, String driver){
this.url = url;
this.username = username;
this.password = password;
try {
/*
同时需要引入相关驱动依赖
1、MySQL:
com.mysql.cj.jdbc.Driver
2、Oracle:
oracle.jdbc.driver.OracleDriver
3、pgsql:
org.postgresql.Driver
*/
//加载驱动
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取 Connection 连接
*/
private Connection getConnection() {
if(connection == null){
try {
connection= DriverManager.getConnection(url, username, password);
connection.setAutoCommit(true);
} catch (SQLException e) {
System.err.println("获取Connection连接异常...");
e.printStackTrace();
}
}
return connection;
}
/**
* 关闭 Connection 连接
*/
private void close(){
if(connection != null){
try {
connection.close();
} catch (SQLException e) {
System.err.println("关闭Connection连接异常...");
e.printStackTrace();
}
}
}
/**
* 查询
* 查询语句
*/
public ArrayList<HashMap<String,Object>> find(String sql, Object[] params) {
ArrayList<HashMap<String, Object>> list = new ArrayList<>();
//获取连接
Connection conn = getConnection();
PreparedStatement ps;
ResultSet rs;
try {
//设置SQL、以及参数
ps = conn.prepareStatement(sql);
if (params != null) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
//执行查询
rs = ps.executeQuery();
//获取查询结果
ResultSetMetaData rm = rs.getMetaData();
int columnCount = rm.getColumnCount();
//封装结果集
while (rs.next()) {
HashMap<String, Object> map = new HashMap<>(columnCount);
for (int i = 1; i <= columnCount; i++) {
String name = rm.getColumnName(i).toLowerCase();
Object value = rs.getObject(i);
map.put(name,value);
}
list.add(map);
}
} catch (Exception e) {
System.err.println("执行 jdbcUtil.find() 异常...");
e.printStackTrace();
}
return list;
}
public HashMap<String,Object> findOne(String sql, Object[] params){
ArrayList<HashMap<String, Object>> list = find(sql, params);
return list.size() > 0 ? list.get(0) : null;
}
/**
* 执行
* 新增/删除/更新语句
*/
private boolean execute(String sql, Object[] params){
boolean flag = false;
//获取连接
Connection conn = getConnection();
PreparedStatement ps;
try {
//设置SQL、以及参数
ps = conn.prepareStatement(sql);
if (params != null) {
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
//执行
flag = ps.execute();
} catch (SQLException e) {
System.err.println("执行 jdbcUtil.update() 异常...");
e.printStackTrace();
}
return flag;
}
}
效果
运行main函数
public static void main(String[] args) {
//获取实例
DbUtil dbUtil = new DbUtil("jdbc:mysql://localhost/jfinal_demo","root","123456");
// find查询
ArrayList<HashMap<String, Object>> list = dbUtil.find("select * from user", null);
for (HashMap<String, Object> map : list) {
System.out.println(map);
}
System.out.println("----------------------------");
//execute执行、findOne查询
dbUtil.execute("delete from user where user_id = ?", new Object[]{"4"});
dbUtil.execute("insert into user values (?,?)", new Object[]{"4","王麻子"});
dbUtil.execute("update user set user_name = ? where user_id = ?", new Object[]{"王麻子子","4"});
HashMap<String, Object> map = dbUtil.findOne("select * from user where user_id = ?", new Object[]{"4"});
System.out.println(map);
//关闭连接
dbUtil.close();
}
后记
原生JDBC操作数据库暂时先记录到这,后续再进行补充
版权声明
作者:huanzi-qch
出处:https://www.cnblogs.com/huanzi-qch
若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/5337.html