最近在項目中遇到一個問題,數(shù)據(jù)庫中有很多張需要由人手工維護的基本數(shù)據(jù)表,而這些數(shù)據(jù)表每一個都需要人工對其中的數(shù)據(jù)進行維護。在開發(fā)的過程中發(fā)現(xiàn)基本上每個頁面需要做的控件相差不大,區(qū)別在于不同的界面對應(yīng)的表和字段不同,而基本的代碼處理流程是一
最近在項目中遇到一個問題,數(shù)據(jù)庫中有很多張需要由人手工維護的基本數(shù)據(jù)表,而這些數(shù)據(jù)表每一個都需要人工對其中的數(shù)據(jù)進行維護。在開發(fā)的過程中發(fā)現(xiàn)基本上每個頁面需要做的控件相差不大,區(qū)別在于不同的界面對應(yīng)的表和字段不同,而基本的代碼處理流程是一至的,所以這就促使我想到能不能有更好一點的辦法簡化這個開發(fā)過程。
用戶界面層,我們最重點的是用戶操作界面的控件要和數(shù)據(jù)庫的字段匹配,在開發(fā)過程中還有,如果數(shù)據(jù)庫的字段有變化的話代碼修改越少越好。所以最好UI可以根據(jù)數(shù)據(jù)庫的字段自動生成相應(yīng)的控件。
業(yè)務(wù)層,可能會做一些基本的數(shù)據(jù)校驗之類的工作,由于在需求中重點是UI和數(shù)據(jù)庫訪問所以業(yè)務(wù)層的功能應(yīng)該會相對簡單一些。
數(shù)據(jù)庫訪問層,在數(shù)據(jù)庫的操作語句中我們也需要知道數(shù)據(jù)庫的字段,以此生成增刪改查的語句。
在這里我打算使用配置文件來進行配置。
在這里我也想到過可以通過DAO來獲得數(shù)據(jù)庫的字段和字段類型,但是轉(zhuǎn)念一想再數(shù)據(jù)庫中我們很多時候可能會使用一樣的SQL類型來存儲不一樣的數(shù)據(jù)類型,比如使用varchar可以存儲字符串,但是也有人使用varchar存儲枚舉型數(shù)據(jù),可能不同的人會使用不同的控件顯示對應(yīng)同一個SQL數(shù)據(jù)類型。所以這里我打算適當?shù)氖褂靡恍┡渲脕韺I顯示數(shù)據(jù)的控件進行配置。
想到這里,在配置文件中就需要有這樣一些配置項,1.數(shù)據(jù)庫的字段。2.這個字段可以是用什么樣地數(shù)據(jù)類型存儲的3.在界面上是用什么控件來展示的。
這里我打算使用java來做開發(fā),但是這種思想我覺得其他任何語言都是可以考慮使用的。所以如果讀者們有什么意見的話也可以一起交流。
下一步是要對配置文件進行定型了。
2014-03-20
配置結(jié)構(gòu)則需要考慮什么控件需要在界面上展示,怎么樣展示,目前還是比較簡單的控件只是輸入文本的。
由于在每個界面上都有的保存,刪除等的按鈕,所以就添加一個的通用界面吧,當然直接在JFrame上畫開始也可以。
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import java.awt.BorderLayout; import javax.swing.JButton; import java.util.TreeMap;
public class ProjectForm extends JFrame{ public String nameString; public JPanel panel ; public TreeMapTextFieldList = new TreeMap (); public ProjectForm() { panel = new JPanel(); getContentPane().add(panel, BorderLayout.CENTER); panel.setLayout(null); JPanel panel_1 = new JPanel(); panel_1.setBounds(82, 5, 265, 33); panel.add(panel_1); JButton btnNew = new JButton("New"); panel_1.add(btnNew); JButton btnSave = new JButton("Save"); panel_1.add(btnSave); JButton btnClear = new JButton("Clear"); panel_1.add(btnClear); JButton btnDelete = new JButton("Delete"); panel_1.add(btnDelete); } }
import java.io.File; import java.util.List; import javax.swing.JLabel; import javax.swing.JTextField; import org.jdom2.*; import org.jdom2.input.SAXBuilder;
public class FormCreator { static ProjectForm CreateForm(String name) { ProjectForm form = new ProjectForm(); form.nameString = name; String filename = "D:\\work eclipse\\1.xml"; int topx = 20; int topy = 80; int Labelwidth = 100; int LabelHeight = 15; int gapy = 30; int textwidth = 300; try { SAXBuilder builder = new SAXBuilder(); org.jdom2.Document document; File file = new File(filename); document = builder.build(file); Element rootElement = document.getRootElement(); ListtableList = rootElement.getChildren(); for (int i = 0; i < tableList.size(); i++) { Element node = tableList.get(i); String tNameString = node.getAttribute("name").getValue(); if(!tNameString.equalsIgnoreCase(name)) { continue; } List tablefeilds = node.getChildren(); for(int j=0;j UIfeilds = feildnode.getChildren(); for(int k=0;k
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com