/*=========================properties文件使用===============================*/

某*.properties文件内容例如:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://1.14.XXX.XX:3306/smart_search?useUnicode=true&characterEncoding=utf-8
username=root
password=159357

若是普通javaweb项目,properties文件放在src中

若是maven项目,properties文件放在resources文件中

使用方法在如下方法封装中已体现

/*==========================相关通用方法封装=============================== */

1.创建utils包-->创建JDBCutils类

2.封装静态方法,具体如下

//获取数据库链接
public static Connection getConnection() throws Exception {ClassLoader classLoader= JDBC.class.getClassLoader();InputStream in=classLoader.getResourceAsStream("db.properties");Properties pop=new Properties();pop.load(in);String driver=pop.getProperty("driver");String url=pop.getProperty("url");String dbUserName=pop.getProperty("username");String dbPassword=pop.getProperty("password");Class.forName(driver);Connection connection= DriverManager.getConnection(url,dbUserName,dbPassword);return connection;
}
//关闭链接和PreparedStatement
public static void closeResource(Connection conn, PreparedStatement ps){try{if(ps!=null)ps.close();}catch (SQLException e){e.printStackTrace();}try{if(conn!=null)conn.close();}catch (SQLException e){e.printStackTrace();}
}
//关闭链接和PreparedStatement和ResultSet
public static void closeResource(Connection conn, PreparedStatement ps, ResultSet rs){try{if(ps!=null)ps.close();}catch (SQLException e){e.printStackTrace();}try{if(conn!=null)conn.close();}catch (SQLException e){e.printStackTrace();}try{if(rs!=null)rs.close();}catch (SQLException e){e.printStackTrace();}
}
//通用的增删改,这里不建议void,因为要判断是否执行成功
public static void update(String sql,Object... args){Connection conn=null;PreparedStatement ps=null;try{conn=JDBC.getConnection();ps=conn.prepareStatement(sql);for(int i=0;i<args.length;i++){ps.setObject(i+1,args[i]);}ps.execute();}catch(Exception e){e.printStackTrace();}finally {JDBC.closeResource(conn,ps);}
}
//通用的查询(能够针对不同表、查询一条记录、返回一个Bean、动态的)
/*Clzz:泛型对象* sql:sql语句* args:具体的占位符* 使用举例:searchResultPojo=JDBC.selectForBean(searchResultPojo.class,sql,id);*/
public static  <T>T selectForBean(Class<T> clazz,String sql,Object... args){Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;try{conn=JDBC.getConnection();ps=conn.prepareStatement(sql);for(int i=0;i<args.length;i++){//填充占位符ps.setObject(i+1,args[i]);}//获取结果集rs= ps.executeQuery();//获取结果集的元数据ResultSetMetaData rsmd=rs.getMetaData();//通过元数据获取结果集的列数int columnCount=rsmd.getColumnCount();if (rs.next()){//获取对应的无参构造器T t=clazz.newInstance();//处理结果集一行数据中的每一个列for(int i=0;i<columnCount;i++){//获取列值Object columnValue=rs.getObject(i+1);//获取每个列的列名//String columnName=rsmd.getColumnName(i+1);String columnLabel=rsmd.getColumnLabel(i+1);//给t对象指定的columnName属性,赋值为columnValue,通过反射Field field=clazz.getDeclaredField(columnLabel);field.setAccessible(true);field.set(t,columnValue);}return t;}}catch(Exception e){e.printStackTrace();}finally {JDBC.closeResource(conn,ps);}return null;
}
//通用的查询(能够针对不同表、用于查询多条记录、返回一个集合、动态的)
/*Clzz:泛型对象* sql:sql语句* args:具体的占位符*/
public static  <T> List<T> selectForList(Class<T> clazz, String sql, Object... args){Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;try{conn=JDBC.getConnection();ps=conn.prepareStatement(sql);for(int i=0;i<args.length;i++){//填充占位符ps.setObject(i+1,args[i]);}//获取结果集rs= ps.executeQuery();//获取结果集的元数据ResultSetMetaData rsmd=rs.getMetaData();//通过元数据获取结果集的列数int columnCount=rsmd.getColumnCount();//创建集合对象ArrayList<T> list=new ArrayList<T>();while (rs.next()){//获取对应的无参构造器T t=clazz.newInstance();//处理结果集一行数据中的每一个列for(int i=0;i<columnCount;i++){//获取列值Object columnValue=rs.getObject(i+1);//获取每个列的列名//String columnName=rsmd.getColumnName(i+1);String columnLabel=rsmd.getColumnLabel(i+1);//给t对象指定的columnName属性,赋值为columnValue,通过反射Field field=clazz.getDeclaredField(columnLabel);field.setAccessible(true);field.set(t,columnValue);}list.add(t);}return list;}catch(Exception e){e.printStackTrace();}finally {JDBC.closeResource(conn,ps);}return null;
}

properties文件的用法;utils类封装数据库连接、资源关闭、通用的增删改,以及两种通用的查询方法相关推荐

  1. 英雄无敌6服务器在哪个文件夹,Win7系统无法运行英雄无敌6的两种原因和解决方法...

    英雄无敌6作为一款策略模拟类游戏,深受高端玩家的喜爱.但最近有Win7旗舰版系统用户在玩英雄无敌6时,却出现了无法运行的情况,重启好多次还是一样,不太清楚是哪里出问题,网上相关解决方案也比较少,针对此 ...

  2. OFD格式文件怎么转图片?分享两种OFD转图片方法

    OFD格式的文件怎么转换成图片呢?大家在办公中如果收到对方发来的OFD格式文件时,不知道怎么打开文件,从而影响我们的正常工作进度.实际上,这种格式的文件一般是需要使用相关的阅读工具才能够打开,但是我们 ...

  3. springboot pom文件添加mysql组件_SpringBoot整合mybatis-plus+druid组件,实现增删改查

    前言 本篇文章主要介绍的是SpringBoot整合mybatis-plus,实现增删改查. GitHub源码链接位于文章底部. 建库建表 创建springboot数据库,创建t_user表,字段id主 ...

  4. node.js编写前端接口,服务器创建、数据库连接、路由挂载,增删改查、分页查询接口的编写

    1.文件准备 我们要准备三个文件来演示最基础的服务器创建.数据库连接路由挂载,增删改查.分页查询接口的编写.其中服务器创建单独一个文件为app.js,数据库连接为一个文件为pool.js,最后一个为接 ...

  5. java下载文件跳转页面_java servlet笔记:设置编码集、文件下载和两种服务器跳转-java下载文件...

    java笔记 一设置编码集: 设置请求的编码: request.setCharacterEncoding(服务器编码) 在代码中也就是这样: 本身这个语法是对请求实体进行设置编码,针对于post有效, ...

  6. Python爬取视频之爱情电影及解密TS文件和两种合并ts的方法

    俗话说,兴趣所在,方能大展拳脚.so结合兴趣的学习才能事半功倍,更加努力专心,apparently本次任务是在视频网站爬取一些好看的小电影,地址不放(狗头保命)只记录过程. 实现功能: 从网站上爬取采 ...

  7. 怎么转换CAD文件的版本?分享两种转换版本的方法

    CAD文件的版本怎么转换呢?大家如果有使用CAD编辑软件的小伙伴肯定遇到过CAD文件打不开的现象,出现这种情况如果排除了文件自身收到损坏之外,那么大概率就是CAD文件的版本问题了,遇到低版本或高版本的 ...

  8. Python学习笔记_文件读写,目录遍历类封装

    文件读写和目录遍历类的封装. mylib.py 1 # -*- coding:utf-8 -*- 2 3 __author__ = 'huanghuan' 4 5 import os 6 from o ...

  9. android java 实体类 object变量 保存_Android中Intent传递对象的两种方法Serializable,Parcelable...

    Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者 ...

最新文章

  1. vim中实现CSS、HTML代码自动完成功能
  2. 关于 href=javascript:; 到底做了什么
  3. ACM入门之【读入、输出优化】
  4. 【推荐】揭秘谷歌电影票房预测模型
  5. mysql检查存在_如何检查MySQL中是否存在行?(即检查MySQL中是否存在电子邮件)...
  6. 第一篇 Windows 8 开发Windows Metro style app环境配置
  7. 三层交换机转发原理和实验
  8. 3D打印产业链全景图
  9. Android failed to start daemon
  10. 外网访问群晖设置ddns教程
  11. Vscode ssh远程连接失败解决办法
  12. libcef-常用概念-框架特点
  13. Python Web开发的完整指南
  14. python简单实现微信抢红包功能
  15. Vijos - 文化之旅(最短路)
  16. 分位数Quantiles
  17. 11.深入浅出:深度负反馈及放大倍数——参考《模拟电子技术基础》清华大学华成英主讲
  18. 基于java的家庭理财系统
  19. Android巴士倒闭了吗
  20. Citrix虚拟化技术之五XenServer6.2资源池配置

热门文章

  1. 统计词频并输出高频词汇
  2. Excel文本日期格式转为日期格式的方法
  3. win11_中文包/中文输入法(微软拼音)设置/键盘/输入法移除win10启用单词输入法/基于英语语言包的美式键/半角切换设置开关
  4. 数据库课程设计-----------学生选课管理系统的设计
  5. 主动笔驱动芯片市场现状及未来发展趋势
  6. 微信发定位服务器地址,腾讯位置服务教你轻松搞定微信发送位置功能
  7. 国庆头像小程序源码,带独立版后台同时可添加小程序跳转+流量主,所有改动均可后台添加+带搭建教程
  8. Linux 3.10内核锁瓶颈描述以及解决-IPv6路由cache的性能缺陷
  9. Unity项目总结(已完成17项,持续更新ing,含商城、塔防、背包、动画、坦克大战等)
  10. 带着问题重学 Java 并发编程