package com.study.util;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* 连接,驱动连接,关闭都有,
* 作为通用的DML处理
*/
public class DBUtil {
static String url="jdbc:mysql://127.1.0.1:3306/mytest?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia%2fShanghai";
static String username="root";
static String userpass="1234561";
static String driver="com.mysql.cj.jdbc.Driver";
static{
//从配置文件获取以上信息
Properties properties=new Properties();
InputStream is = DBUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
try {
properties.load(is);//将jdbc.properties加载到这个对象
} catch (IOException e) {
e.printStackTrace();
}
//获取到配置文件里的信息
url = properties.getProperty("url");
username = properties.getProperty("name");
userpass = properties.getProperty("password");
driver = properties.getProperty("driver");
//注册驱动
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//连接方法
public static Connection getConnection(){
Connection connection=null;
if (null==connection){
try {
connection= DriverManager.getConnection(url,username,userpass);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return connection;
}
//关闭方法
public static void close(ResultSet resultSet, PreparedStatement preparedStatement,Connection connection){
try {
if (resultSet!=null) {
resultSet.close();
}
if (preparedStatement!=null) {
preparedStatement.close();
}
if (connection!=null) {
connection.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
/**
* DML通用方法
* @param sql
* @param params,Object... params 可变长的参数
* @return boolean
*/
public static boolean executeDML(String sql,Object... params){
try {
//获取连接
Connection connection=getConnection();
//预处理
PreparedStatement ps=connection.prepareStatement(sql);
//设置参数
if (null!=params){
for (int i=0;i<params.length;i++){
ps.setObject(i+1,params[i]);
}
}
//执行SQL
int i = ps.executeUpdate();
//关闭连接
close(null,ps,connection);
return i>0;
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return false;
}
/**
* 通用的DQL方法
* @param sql 查询语句
* @param tClass 实体类的字节码对象
* @param params 查询语句里的占位符
* @param <T> 实体类的泛型
* @return 查询到的数据集合
*/
public static <T> List<T> executeDQL(String sql,Class<T> tClass,Object... params){
try {
//1.获取连接
Connection connection=getConnection();
//2.预处理
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//3.设置参数
if (params!=null){
for (int i=0;i<params.length;i++){
preparedStatement.setObject(i+1,params[i]);
}
}
//4.执行SQL得到结果集
ResultSet resultSet = preparedStatement.executeQuery();
/**
* 5.遍历并打印结果集
*/
//用List来保存所有的表数据
List<T> list=new ArrayList<T>();
T t;
//获取原数据
ResultSetMetaData metaData = resultSet.getMetaData();
//获取列的总数
int columnCount = metaData.getColumnCount();
//循环遍历结果
while(resultSet.next()){
//用t保存每一条数据
t=tClass.newInstance();
for (int i=1;i<=columnCount;i++){
//获取每列的别名
String columnLabel = metaData.getColumnLabel(i);
//获取该列是所有行信息
Object object = resultSet.getObject(columnLabel);
//打印该列的所有行数据
try {
//根据属性的名称通过反射获取属性对象
Field declaredField = tClass.getDeclaredField(columnLabel);
declaredField.setAccessible(true);
declaredField.set(t,object);
}catch (NoSuchFieldException e) {
//代表我们当前的实体类里面没有这个属性
}
}
list.add(t);
}
//关闭连接
close(resultSet,preparedStatement,connection);
//将t对象保存到list里面
return list;
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
return null;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JDBC完成增删改查案例
共80个文件
jar:44个
java:13个
class:13个
需积分: 0 7 下载量 16 浏览量
2023-01-28
18:56:04
上传
评论
收藏 21.42MB ZIP 举报
温馨提示
1.idea案例 2.数据库(mysql)
资源推荐
资源详情
资源评论
收起资源包目录
JDBCCrud.zip (80个子文件)
mytest.sql 2KB
JDBCCrud
lib
jackson-core-2.10.0.jar 340KB
taglibs-standard-impl-1.2.1.jar 196KB
mysql-connector-java-8.0.18.jar 2.22MB
druid-1.1.19.jar 2.65MB
aspectjweaver-1.9.5.jar 1.95MB
javax.servlet-api-4.0.1.jar 93KB
jackson-databind-2.10.0.jar 1.34MB
jackson-mapper-asl-1.9.13.jar 762KB
jakarta.annotation-api-1.3.5.jar 24KB
jstl-1.2.jar 405KB
mybatis-plus-core-2.3.jar 101KB
protobuf-java-3.6.1.jar 1.36MB
mybatis-plus-generate-2.3.jar 63KB
hamcrest-core-1.3.jar 44KB
commons-fileupload-1.4.jar 71KB
mail-1.4.7.jar 509KB
spring-core-4.2.4.RELEASE.jar 1.03MB
jackson-core-asl-1.9.13.jar 227KB
spring-context-4.2.4.RELEASE.jar 1.05MB
lombok-1.18.10.jar 1.68MB
spring-aop-4.2.4.RELEASE.jar 361KB
spring-expression-4.2.4.RELEASE.jar 257KB
spring-tx-4.2.4.RELEASE.jar 259KB
spring-jdbc-4.2.4.RELEASE.jar 413KB
taglibs-standard-spec-1.2.1.jar 38KB
commons-io-2.2.jar 170KB
mybatis-3.4.6.jar 1.55MB
spring-aspects-4.2.4.RELEASE.jar 57KB
log4j-1.2.17.jar 478KB
jackson-annotations-2.10.0.jar 66KB
mybatis-plus-2.3.jar 261B
spring-webmvc-4.2.4.RELEASE.jar 854KB
spring-beans-4.2.4.RELEASE.jar 714KB
aopalliance-1.0.jar 4KB
spring-web-4.2.4.RELEASE.jar 749KB
sitemesh-3.0.1.jar 146KB
mybatis-spring-1.3.2.jar 52KB
pagehelper-5.1.4.jar 79KB
jsp-api-2.1.jar 98KB
commons-logging-1.2.jar 60KB
mybatis-plus-support-2.3.jar 145KB
spring-test-4.2.4.RELEASE.jar 549KB
jsqlparser-1.0.jar 356KB
activation-1.1.jar 62KB
src
com
study
dao
IPersonDao.java 296B
impl
PersonDaoImpl.java 1KB
service
IPersonService.java 70B
impl
PersonServiceImpl.java 324B
view
PersonView.java 265B
info
PersonInfo.java 779B
test
test2.java 417B
test5.java 1KB
test1.java 438B
test4.java 2KB
test3.java 1KB
util
DBUtilPool.java 1KB
DBUtil.java 6KB
out
production
DemoLayers
jdbc.properties 578B
druid.properties 139B
com
study
dao
impl
PersonDaoImpl.class 1KB
IPersonDao.class 224B
service
IPersonService.class 127B
impl
PersonServiceImpl.class 597B
view
PersonView.class 540B
info
PersonInfo.class 1KB
test
test1.class 957B
test4.class 1KB
test5.class 2KB
test3.class 2KB
test2.class 817B
util
DBUtilPool.class 1KB
DBUtil.class 5KB
.idea
workspace.xml 8KB
misc.xml 278B
modules.xml 267B
.gitignore 184B
DemoLayers.iml 1012B
config
jdbc.properties 578B
druid.properties 139B
共 80 条
- 1
资源评论
晚风微雨
- 粉丝: 3
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功