java 后台获取数据后的操作数据库

如图所示,由监听器调用Service业务类,然后再调用DAO访问数据库。
即是后面的2--1--3 (4 5)


image.png

1.ConfigService 设置业务类,这个类是监听器直接调用的类,然后再通过ConfigService去调用ConfigDAO。

为什么需要一个业务类呢? DAO是直接和数据库打交道的,在和数据库打交道之前,还需要对数据进行预处理,这些就可以放在业务类里进行。

ConfigService 业务类做了几个事情
(1). 初始化 init()
因为设置信息里有两个数据,一个是预算,一个是Mysql路径。 这两个信息,无论如何都应该是存在数据库中的。 所以会调用init把他们俩初始化。

(2). init(String key, String value) 方法
首先根据key去查找,如果不存在,就使用value的值插入一条数据。

(3). get(String key)
根据键获取相应的值

(4). update(String key, String value)
更新键对应的值

package service;
 
import dao.ConfigDAO;
import entity.Config;
 
public class ConfigService {
    public static final String budget = "budget";
    public static final String mysqlPath = "mysqlPath";
    public static final String default_budget = "500";
 
    static ConfigDAO dao= new ConfigDAO();
    static{
        init();
    }
 
    public static void init(){
        init(budget, default_budget);
        init(mysqlPath, "");
    }
     
    private static void init(String key, String value) {
         
        Config config= dao.getByKey(key);
        if(config==null){
            Config c = new Config();
            c.setKey(key);
            c.setValue(value);
            dao.add(c);
        }
    }
 
    public String get(String key) {
        Config config= dao.getByKey(key);
        return config.getValue();
    }
     
    public void update(String key, String value){
        Config config= dao.getByKey(key);
        config.setValue(value);
        dao.update(config);    
    }
     
    public int getIntBudget() {
        return Integer.parseInt(get(budget));
    }
     
}

2.ConfigListener
监听器ConfigListener,这个监听器是用在更新按钮上的

  1. 首先判断输入的预算值是否是整数

  2. 接着判断输入的MYSQL安装路径是否正确。 判断办法是看路径对应的bin子目录下是否有mysql.exe文件存在

3. 如果上述两个判断都通过了,那么就调用业务类ConfigService来调用dao进行数据更新!!!!! ConfigService cs= new ConfigService();
cs.update(ConfigService.budget,p.tfBudget.getText());
cs.update(ConfigService.mysqlPath,mysqlPath);

  1. 最后提示设置修改成功
package gui.listener;
 
import java.awt.event.ActionEvent;
 
import java.awt.event.ActionListener;
import java.io.File;
 
import javax.swing.JOptionPane;
 
import gui.panel.ConfigPanel;
import service.ConfigService;
import util.GUIUtil;
 
public class ConfigListener implements ActionListener{
 
    @Override
    public void actionPerformed(ActionEvent e) {
        ConfigPanel p = ConfigPanel.instance;
        if(!GUIUtil.checkNumber(p.tfBudget, "本月预算"))
            return;
        String mysqlPath =p.tfMysqlPath.getText();//这部分设计到swing 可以不太理解
        if(0!=mysqlPath.length()){
            File commandFile = new File(mysqlPath,"bin/mysql.exe");
            if(!commandFile.exists()){
                JOptionPane.showMessageDialog(p, "Mysql路径不正确");
                p.tfMysqlPath.grabFocus();
                return;
            }
        }
         
        ConfigService cs= new ConfigService();
        cs.update(ConfigService.budget,p.tfBudget.getText());
        cs.update(ConfigService.mysqlPath,mysqlPath);
         
        JOptionPane.showMessageDialog(p, "设置修改成功");
 
    }
 
}

3.然后DAO的话,就得写一个DAO来操控数据库

public class ConfigDao {
    public void update(Config config) {
        String sql = "update config set key_= ?, value=? where id = ?";
        try (Connection c = DButil.getConnection();
             PreparedStatement ps = c.prepareStatement(sql);) 
        {
            ps.setString(1, config.key);
            ps.setString(2, config.value);
            ps.setInt(3, config.id);
            ps.execute();
        } catch (SQLException e) {
          e.printStackTrace();
        }
    }
    public Config getByKey(String key) {
        Config config = null;
        String sql = "select * from config where key_ = ?" ;
        try (Connection c = DButil.getConnection();
                PreparedStatement ps = c.prepareStatement(sql);
            ) {
             
            ps.setString(1, key);
            ResultSet rs =ps.executeQuery();
 
            if (rs.next()) {
                config = new Config();
                int id = rs.getInt("id");
                String value = rs.getString("value");
                config.key = key;
                config.value = value;
                config.id = id;
            }
 
        } catch (SQLException e) {
 
            e.printStackTrace();
        }
        return config;
    }
 
}

4.下面是Entity

package entity;

public class Config {
public int id;
public String value;
public String key;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getValue() {
    return value;
}
public void setValue(String value) {
    this.value = value;
}
public String getKey() {
    return key;
}
public void setKey(String key) {
    this.key = key;
}

}

5.最后不要忘了在ConfigPanel添加监听器
public void addListener() {
ConfigListener l =new ConfigListener();
bSubmit.addActionListener(l);
}

addListener();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容