/** * ReadWriteTools.java * * 功能:读写配置文件操作工具类 * 类名:ReadWriteTools * * ver 变更日 部门 开发者 变更内容 * ───────────────────────────────────────────────────── * V1.00 2013-9-6 研发部 常宝龙 初版 * * Copyright (c) 2008, 2013 Infopower corporation All Rights Reserved. */ package com.syxp.mail.common; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Properties; import org.apache.log4j.Logger; /** * 读写配置文件工具类 * * @author 常宝龙 * @version Ver 1.0 2013-09-06 新建 * @since CodingExample Ver 1.0 * */ public class ReadWriteTools { /** * 属性文件路径 */ private static String propertiesPath = ""; /** * 日志输出 */ private static Logger logger = Logger.getLogger(ReadWriteTools.class); /** * 根据主键key读取主键的值value * * @param key * 键名 * @param confPath * 配置文件路径 * @return */ public static String readValue(String key, String confPath) { Properties properties = new Properties(); propertiesPath = System.getProperty("user.dir") + confPath; try { InputStream is = new BufferedInputStream(new FileInputStream( propertiesPath)); properties.load(is); String value = properties.getProperty(key); is.close(); return value; } catch (Exception e) { logger.error("读取配置文件键值发生错误!", e); return null; } } /** * 更新(或插入)一对properties信息(主键及其键值) 如果该主键已经存在,更新该主键的值; 如果该主键不存在,则插件一对键值。 * * @param keyName * 键名 * @param keyValue * 键值 * @param confPath * 配置文件路径 */ public static void writeProperties(String keyName, String keyValue, String confPath) { propertiesPath = System.getProperty("user.dir") + confPath; try { // 调用 HashTable 的方法 put,使用 getProperty 方法提供并行性。 // 强制要求为属性的键和值使用字符串。返回值是 HashTable 调用 put 的结果。 // 读配置文件路径 Properties properties = new Properties(); properties.load(new FileInputStream(propertiesPath)); OutputStream os = new FileOutputStream(propertiesPath); properties.setProperty(keyName, keyValue); // 以适合使用 load 方法加载到 Properties 表中的格式, // 将此 Properties 表中的属性列表(键和元素对)写入输出流 properties.store(os, "Update '" + keyName + "' value"); os.close(); } catch (FileNotFoundException e) { logger.error("配置文件路径没有找到!", e); } catch (IOException e) { logger.error("属性文件更新错误", e); } } }
/** * ConnectionDB.java * * 功能:JDBC连接数据库 * 类名:ConnectionDB * * ver 变更日 部门 开发者 变更内容 * ───────────────────────────────────────────────────── * V1.00 2013-9-9 研发部 常宝龙 初版 * * Copyright (c) 2008, 2013 Infopower corporation All Rights Reserved. */ package com.syxp.mail.common; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.log4j.Logger; /** * JDBC数据库连接类 * * @author 常宝龙 * @version Ver 1.0 2013-09-09 新建 * @since CodingExample Ver 1.0 * */ @SuppressWarnings("static-access") public class ConnectionDB { /** * 日志输出 */ private static Logger logger = Logger.getLogger(ConnectionDB.class); /** * 数据库URL地址 */ private static String url = ""; /** * 数据库用户名 */ private static String dbUser = ""; /** * 数据库密码 */ private static String dbPwd = ""; /** * 数据库驱动 */ private static String dbDriver = ""; /** * 数据库连接类 */ private static Connection conn = null; /** * 配置文件路径 */ private static final String confPath = "/conf/jdbc.properties"; static { ReadWriteTools readWriteTools = new ReadWriteTools(); url = readWriteTools.readValue("url", confPath); dbUser = readWriteTools.readValue("dbUser", confPath); dbPwd = readWriteTools.readValue("dbPwd", confPath); dbDriver = readWriteTools.readValue("dbDriver", confPath); } /** * 获取数据库连接 * * @return */ public static Connection getConnection() { try { Class.forName(dbDriver); conn = DriverManager.getConnection(url, dbUser, dbPwd); logger.info("连接数据库成功。"); } catch (ClassNotFoundException e) { logger.error("连接数据库失败,数据库驱动类没有找到!", e); } catch (SQLException e) { logger.error("连接数据库失败,SQLException", e); } return conn; } /** * 关闭数据库连接 * * @param conn * @param pstmt * @param rs */ public static void closeConnection(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); rs = null; } if (pstmt != null) { pstmt.close(); pstmt = null; } if (conn != null) { conn.close(); conn = null; } logger.info("成功关闭数据库连接"); } catch (SQLException e) { logger.error("关闭数据库连接失败,SQLException", e); } } }
相关推荐
`Properties`类继承自`Hashtable`,用于处理键值对配置信息,常用于读写.properties配置文件。 #### 十二、打印流 `PrintStream`和`PrintWriter`类提供了方便的打印输出方法,常用于标准输出、日志记录等。 #### ...
`application.properties`文件包含了Spring Boot应用的基本配置信息,如数据库连接信息、日志级别等。 ##### DAO数据层:实体类 实体类通常对应数据库中的表,包含了表中各个字段的映射。这些类通常使用注解来声明...
10. **Commons Configuration**:提供了一种灵活的方式来管理应用程序的配置,支持多种配置源,如XML、Properties、系统环境变量等。 Jakarta Commons的这些组件遵循模块化设计,可以单独使用,也可以组合使用以...
例如,可能有配置文件(如`application.properties`或`yaml`),展示了如何设置Spring Boot的属性;`test`可能是一个控制器类,演示了如何处理HTTP请求;还可能包含了数据库连接和数据访问的配置,以及使用了AOP进行...
通过`SqlMapClientBuilder`等工具类可以方便地加载配置文件并初始化iBATIS环境。 ##### 2. Transactions iBATIS支持自动提交事务和手动控制事务两种方式。 ##### 3. Multi-Threaded Programming 为了支持多线程...