java处理代码表_Java对代码表的处理技巧

首页 > 编程语言> 文章详细

Java对代码表的处理技巧

2020-03-22 12:00:44阅读:53来源:互联网

Java对代码表的处理技巧

在Java中应用系统中,常常会有很多的代码表要处理,这些处理需求主要表现在通过代码获取名称,获取该代码的其他信息,如果每次都通过查询数据库来处理,是必消耗大量的资源,速度也慢,因为每次连接连接数据库要付出的代价是高昂的。

那如何解决上面这些问题呢?我们可以考虑使用Java对象的缓存技术来实现,即,将代码表以对象的方式存储起来,最容易考虑到的就是Map对象,Map的key用来存放代码,value用来存放代码对象,这样,就可以通过代码方便获取代码表的各种信息。

另外代码表工具类是是不需要创建对象和被继承的,只需要通过类名获取代码初始化的时候所填充的Map对象即可。因此定义类的时候类名应该被final修饰,默认构造方法应该是private的,其他工具方法应该是public static的,还应该有个static代码块,在类加载的时候初始化代码表。

下面给出个例子:假设有个期别代码表,期别代码表包含三个属性:代码、名称类型。我现在就要实现一个期别代码表工具类,来展示上面的处理思想。

/**

* 期别代码Bean

* File: StageBean.java

* User: leizhimin

* Date: 2008-2-22 9:33:30

*/

public class StageBean {

private String code;    //代码

private String name;    //名称

private String type;    //类型

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

}

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import com.topsoft.icisrpt.common.beans.StageBean;

import com.topsoft.icisrpt.common.util.DBUtil;

import java.util.Map;

import java.util.HashMap;

import java.sql.Connection;

import java.sql.Statement;

import java.sql.ResultSet;

import java.sql.SQLException;

/**

* 期别代码工具类

* File: StageCode.java

* User: leizhimin

* Date: 2008-2-22 9:35:43

*/

public final class StageCode {

private static final Log log = LogFactory.getLog(StageCode.class);

private static Map codeMap = new HashMap();

private static boolean isLoad = false;

private static final String sql = "\n" +

"SELECT DM,MC,LX FROM RPT.DM_BBQB";

static {

reLoad();

}

/**

* 私有构造方法,禁止创建对象

*/

private StageCode() {

}

/**

* 重新加载期别代码

*

* @return boolean

*/

public static boolean reLoad() {

boolean flag = false;

Connection conn = DBUtil.makeConnection();

Statement stmt = null;

try {

stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);

ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {

StageBean stageBean = new StageBean();

stageBean.setCode(rs.getString("DM"));

stageBean.setName(rs.getString("MC"));

stageBean.setType(rs.getString("LX"));

codeMap.put(stageBean.getCode(), stageBean);

}

isLoad = true;

flag = true;

} catch (SQLException e) {

log.error("载入期别代码表发生异常!");

e.printStackTrace();

} finally {

if (stmt != null) try {

stmt.close();

} catch (SQLException e) {

log.error("关闭数据库Statement对象失败!");

e.printStackTrace();

}

if (conn != null) try {

conn.close();

} catch (SQLException e) {

log.error("关闭数据库连接失败!");

e.printStackTrace();

}

}

log.info("加载期别代码表" + (flag ? "成功!" : "失败!"));

return flag;

}

/**

* 获取期别代码表

*

* @return Map

*/

public static Map getCodeMap() {

return codeMap;

}

/**

* 判断期别代码表是否已经载入

*

* @return boolean

*/

public static boolean isLoad() {

return isLoad;

}

/**

* 获取查询期别代码表的SQL

*

* @return String

*/

public static String getSql() {

return sql;

}

}

import java.util.Map;

import java.util.Collection;

import java.util.Iterator;

/**

* 模拟客户端测试类

* File: TestStageCode.java

* User: leizhimin

* Date: 2008-2-22 9:40:29

*/

public class TestStageCode {

public static void main(String args[]) {

Map codeMap = StageCode.getCodeMap();

Collection col = codeMap.values();

System.out.println("查询的SQL代码为:" + StageCode.getSql());

System.out.println("------------------");

System.out.println("下面是查询到代码表内容:");

for (Iterator it = col.iterator(); it.hasNext();) {

StageBean bean = (StageBean) it.next();

System.out.println(bean.getCode() + " —— " + bean.getName() + " —— " + bean.getType());

}

}

}

运行结果:

查询的SQL代码为:

SELECT DM,MC,LX FROM RPT.DM_BBQB

------------------

下面是查询到代码表内容:

D —— 冬季 季报 —— J

01 —— 01月 月报 —— Y

07 —— 07月 月报 —— Y

C —— 春季 季报 —— J

02 —— 02月 月报 —— Y

B —— 下半年 年报 —— B

Q —— 秋季 季报 —— J

06 —— 06月 月报 —— Y

03 —— 03月 月报 —— Y

10 —— 10月 月报 —— Y

04 —— 04月 月报 —— Y

05 —— 05月 月报 —— Y

A —— 上半年 年报 —— B

11 —— 11月 月报 —— Y

09 —— 09月 月报 —— Y

N —— 年报 —— N

12 —— 12月 月报 —— Y

08 —— 08月 月报 —— Y

X —— 夏季 季报 —— J

Process finished with exit code 0

标签:Java,String,java,代码,static,import,public,技巧

来源: https://www.cnblogs.com/liudianjia/p/12545192.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值