课程设计指导 | 用 Java 实现一个简易的教学管理系统 (3) —— 工具类

在上一篇文章里我们讲了怎么创建 JavaBean,此时我们还不需要用到这些 Beans,我们还要学会工具类的使用,后期这两个都会用得上…

什么是工具类?

工具类和 JavaBean 一样,并不是特性或者功能,只是程序员们根据自己编程的经验总结,大家在一起约定俗成的规范之一,接下来就让我们看一个例子,这是一个简单的读取数据库字段方法:

import java.sql.*;
import com.personal.teachmanager.Beans.dataUsers;

public class noDBUtils {
    private static String url="jdbc:mysql://localhost:3333/xxxxx";
    private static String user="user1";
    private static String password="123456";
    private static Connection conn;
    public static void main(String[] args) {
        try {
            String sid = "2021103001";
            dataUsers u = new dataUsers();
            u.setStudentID(sid);
            conn = DriverManager.getConnection(url,user,password);
            Class.forName("com.mysql.jdbc.Driver");
            PreparedStatement ps = conn.prepareStatement("... where Sid=?");
            ps.setString(1, u.getStudentID());
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                String stuid = rs.getString("Sid");
                String sname = rs.getString("Sname");
                String clname = rs.getString("CLname");
                String sage = rs.getString("Sage");
                String stele = rs.getString("Stele");
                String semail = rs.getString("Semail");
                System.out.println("姓名:" + sname + "。班级:" + clname +  "。年龄:" + sage + "。电话:" + stele + "。邮箱:" + semail + "\n");
            }
            ps.close();
            rs.close();
            conn.close();
        } catch (ClassNotFoundException | SQLException e){
            e.printStackTrace();
        }
        try {
            String tid = "10001";
            dataUsers u = new dataUsers();
            u.setTeacherID(tid);
            conn = DriverManager.getConnection(url,user,password);
            Class.forName("com.mysql.jdbc.Driver");
            PreparedStatement ps = conn.prepareStatement("... where Tid=?");
            ps.setString(1, u.getTeacherID());
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                String teaid = rs.getString("Tid");
                String tname = rs.getString("Tname");
                String dname = rs.getString("Dname");
                String tvalue = rs.getString("TLvalue");
                String tage = rs.getString("Tage");
                String isvalue = rs.getString("ISvalue");
                String ttele = rs.getString("Ttele");
                String temail = rs.getString("Temail");
                System.out.println("姓名:" + tname + "。院系:" + dname + "。职称:" + tvalue + "。年龄:" + tage + "。性别:" + isvalue + "。电话:" + ttele + "。邮箱:" + temail);
            }
            ps.close();
            rs.close();
            conn.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

让我们运行一下,它的输出结果会是这样的:

姓名:李四。班级:网络工程。年龄:21。电话:15554444566。邮箱:1264@qq.com

姓名:彰武。院系:计算机科学学院。职称:教授。年龄:29。性别:男。电话:12354154125。邮箱:1233211@qq.com

嗯,结果是没问题,但是如果你仔细看这段代码,你会不会觉得,有点冗余?在这段代码里,我们调用了两次

conn = DriverManager.getConnection(url,user,password);
Class.forName("com.mysql.jdbc.Driver");

除此之外,我们用了两次 try… catch,两次 close,这实在是太浪费了!

那我们有没有什么好的方法呢?工具类就应运而生啦!

我们可以将连接数据库的方法写进这个类里,封装成一个工具类,然后我们在其它类里直接去调用这个工具类,不仅对功能的调用会减少,同时代码也会更简洁美观。

我该如何去写一个工具类?

和 JavaBean 一样,我们只需要正常的创建一个类就好,然后直接就在这个类里写。

等等!这么直接的吗??当然不是,对类的命名就要注意,一般情况下,我们对工具类的命名都会是:

XXUtils

如果是数据库操作类,我们会写DBUtils

以此类推…等等

总结出来规律,它都一定会是Utils结尾,告诉大家这是个工具类,不要随便修改哟~

现在我们以数据库连接类为例,写一个实战开发。

想想我们需要写哪些方法

  • 数据库连接,我们必须要做的就是加载驱动。
  • 加载完了后,按照业务逻辑,当然就是连接数据库了,这跟我们正常写数据库连接是一样的。
  • 写好数据库连接后,我们也能想到,在操作完数据库后,我们肯定是要断开连接的,否则会出一些乱七八糟的安全问题。

现在可以开始写了

想好以后,我们就可以直接开始写了,能想到这里你一定会是文思泉涌的!能行云流水的写出相关的实现。

测试你的工具类

写好以后,我们就来测试一下,我们可以用JUnit测试,也可以手动测试,在这里我们手动测试就好~测试代码如下:

private static Connection conn = null;
public static void main(String[] args) {
    int flag = 0;
    conn = dbUtils.getConnection();
    if (conn!=null) {
        while (flag != 1) {
            System.out.println("关闭请输入1:");
            Scanner sc = new Scanner(System.in);
            flag = sc.nextInt();
        }
        dbUtils.closeConnection();
    }
}

它的运行结果会是这样的:

数据库连接成功

关闭请输入1:

1

数据库断开成功

Process finished with exit code 0

当整个测试程序按照你的实现逻辑去运行,就说明你的工具类已经创建成功啦~

JUnit 进行测试如下:

右键,点击 Generate
在出来的子菜单中选择 Test
弹出来的窗口里选择我们刚刚写的方法
在对应的方法里写上操作
运行,如果 All Pass,代表整个方法逻辑是没有问题的

现在你可以依靠工具类去编写一开始讲的例子了,快来试试吧!

完整代码

dbUtils.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class dbUtils {
    private static Connection conn=null;
    private static String url="jdbc:mysql://localhost:3333/xxxxx";
    private static String user="user1";
    private static String password="123456";
    //private static String url = "jdbc:odbc:JDBC-x64";
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        }
    }
    public static Connection getConnection() {
        try {
            conn = DriverManager.getConnection(url,user,password);
            System.out.println("数据库连接成功");
            //Connection con = DriverManager.getConnection(url);
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("数据库连接失败,请检查错误信息!");
        }
        return conn;
    }
    public static Connection closeConnection() {
        if(conn != null) {
            try {
                conn.close();
                System.out.println("数据库断开成功");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return conn;
    }
}

testConn.java

import com.personal.teachmanager.DBUtils.dbUtils;

import java.sql.Connection;
import java.util.Scanner;

public class testConn {
    private static Connection conn = null;
    public static void main(String[] args) {
        int flag = 0;
        conn = dbUtils.getConnection();
        if (conn!=null) {
            while (flag != 1) {
                System.out.println("关闭请输入1:");
                Scanner sc = new Scanner(System.in);
                flag = sc.nextInt();
            }
            dbUtils.closeConnection();
        }
    }
}

想一想

在上一篇文章中我们讲到了如何创建 JavaBean,但是当我们需要创建多个 Bean 的时候,手动生成是非常繁琐的。在这里我们学到工具类的操作后,我们不妨想想,如何使用工具类来自动生成 JavaBean 呢?

如果有那个闲心我就写一下。。

暂无评论

发送评论 编辑评论

分享你的想法!评论时请如实在信息框填写个人信息
文明上网理性发言,请遵守相关法律法规,发表评论将会在站长审核通过后出现在评论列表中

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇