工具类的设计

将一些反复调用的代码封装成工具类,不仅可以提高开发效率,还可以提高代码的可读性。MR 人脸识别打卡系统中共有两个工具类,分别是日期时间工具类和数据库连接工具类。

日期时间工具类主要用在考勤报表业务和窗体显示中,数据库连接工具类主要用在数据库接口的实现类中。

日期时间工具类

com.mr.clock.util 包下的 DateTimeUtil.java 为日期时间工具类,该类为项目提供了一系列获取时间、校验时间格式的静态工具方法。

获取当前日期 时间字符串

DateTimeUtil 类提供了 3 种获取当前时间字符串的方法,具体如下:

  • 按照 HH:mm:ss 的格式获取当前时间的 timeNow() 方法,得到的字符串格式如 “20:03:56”,即晚上8时3分56秒。

  • 按照 yyyy-MM-dd 的格式获取当前日期的 dateNow() 方法,得到的字符串格式如“2023-1-08”,即2023年1月8日。

  • 按照 yyyy-MM-dd HH:mm:ss 的格式获取当前日期时间的 dateTimeNow() 方法,得到的字符串格式如 “2023-1-08 20:03:56”,即2023年1月8日晚上8时3分56秒。

这3种方法的具体代码如下:

获取由当前年 月 日 时 分 秒数字所组成的数组

DateTimeUtil 类提供的 now() 方法可以将当前时间的年、月、日、时、分、秒数组封装成一个长度为6的整数数组。now() 方法使用 Calendar 日历类获取当前年、月、日、时、分、秒。因为在 Calendar 日历类中一月份是用数字0表示的,所以要在月份结果后面+1。now() 方法的具体代码如下:

获取指定月份的总天数

DateTimeUtil 类提供的 getLastDay() 方法可以获取指定月份的总天数,也就是最后一天的日期。方法的参数year用来指定年份,参数month用来指定月份。计算出一个月有多少天对于生成考勤报表是至关重要的,不同月份可能出现的总天数为28天、29天(闰年)、30天和31天。getLastDay() 方法使用Calendar日历类提供的 getActualMaximum() 方法即可自动计算出具体月份的总天数。getLastDay() 方法的具体代码如下:

将字符串转换为Date对象

DateTimeUtil类提供的dateOf()方法可以将时间字符串转为Date对象,该方法的参数datetime就是传入的时间字符串,该字符串必须符合yyyy-MM-dd HH:mm:ss时间格式,否则该方法会抛出ParseException异常。dateOf()方法的具体代码如下:

按照指定年 月 日和时间创建Date对象

这是dateOf()方法的重载方法,该方法的参数由原先的1个变为4个。其中,参数year指定具体年份,参数month指定具体月份,参数day指定具体日期,这3个参数都是整数类型。最后一个参数time指定了时间,time必须是以HH:mm:ss为时间格式的字符串,否则dateOf()方法的重载方法会抛出ParseException异常。dateOf()方法的重载方法会拼接这4个参数,然后按照"%4d-%02d-%02d %s"对拼接的结果进行格式化,其含义如下:

  • %4d:长度为4的整数。

  • %02d:长度为2且用0补位的整数。

  • %s:直接显示字符串。

最后就会将参数拼接成符合yyyy-MM-dd HH:mm:ss时间格式的字符串,并将拼接好的字符串交给dateOf(String datetime)进行转换。重载方法的具体代码如下:

校验时间字符串是否符合HH:mm:ss格式

DateTimeUtil类提供的checkTimeStr()方法是一个校验字符串的方法。如果参数time的值符合HH:mm:ss时间格式,则返回true,否则返回false。checkTimeStr()方法通过异常处理来实现格式校验。checkTimeStr()方法的具体代码如下:

数据库连接工具类

com.mr.clock.util 包下的 JDBCUtil.java 为数据库连接工具类,该类封装了加载驱动、读取配置文件、创建连接和关闭连接等一系列操作。

静态属性

JDBCUtil 类将一些数据库连接属性值、数据库连接对象和配置文件地址定义成了私有静态属性,这样可以方便类中的静态代码块和方法调用。这些属性的定义如下:

初始化

JDBCUtil 类通过一个静态代码块完成类的初始化。在初始化过程中,程序会先读取 com.mr.clock.config 包下的 jdbc.properties 文件,如果读取到的属性驱动名和连接地址为 null,则会触发缺少配置信息的异常。静态代码块的具体代码如下:

获取数据库连接

JDBCUtil 类提供的 getConnection() 静态方法是本类的核心方法,该方法可以向外提供根据 jdbc.properties 中的配置信息创建的数据库连接对象,使用此数据库连接对象即可直接向数据库发送 SQL 语句。getConnection() 方法的具体代码如下: