书店管理系统中对uuid的获取

书店管理系统中对uuid的获取

每添加一个用户时希望能够有系统分配id,或者是每添加一本书籍

在书店管理系统中有7个需要分配id的版块:UserModel,BookModel,InMainModel,InDetailModel,OutMainModel,

OutInDetailModel。

这里我们使用枚举法对发个版块分别分配id进行操作。

其包结构如下




第一步写出uuid的枚举类UuiModelConstance

public enum UuidModelConstance {
USER("UserModel"),
BOOK("BookModel"),
IN_MAIN("InMainModel"),
IN_DETAIL("InDetailModel"),
OUT_MAIN("OutMainModel"),
OUT_DETAIL("OutDetailModel"),
STOCK("StockModel");//枚举中所含的项

private final String name;//枚举中定义的变量都是final类型,所以只有gettter函数

//枚举中的权限是private,可以不写但是java会自动帮我们加

private UuidModelConstance(String name){//构造枚举
this.name=name;
}
public String getName() {
return name;
}

}


第二步写出uuid值对象的封装UuidModel(包含modelName和currentName变量);

public class UuidModel implements Serializable  {//第一步值对象都要借口Serializable实现可序化
private String modelName;//变量的声明属于private
private int currentName;


public UuidModel(){//必须实现一个空参构造

}
public String getModelName() {//实现setter和getter函数
return modelName;
}
public void setModelName(String modelName) {
this.modelName = modelName;
}
public int getCurrentName() {
return currentName;
}
public void setCurrentName(int currentName) {
this.currentName = currentName;
}

//以 currentName为主关键字构造hashCode和equal方法

@Override

public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + currentName;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
UuidModel other = (UuidModel) obj;
if (currentName != other.currentName)
return false;
return true;
}




}


第三步写DAO完成具体的实现

DAO主要包括三个部分

    1、dao包写一个interface类写出需要实现的方法

    public interface UuidDAO {
public String getNextNum(UuidModelConstance model);//获取需要得到id的模块名
    }

    2、impl包implements  dao中的类具体实现方法

public class UuidDAOimpl implements UuidDAO{
private final String FILE_NAME="Uuid.txt";//将记录放到一个叫Uuid.txt的文件中
@Override
public String getNextNum(UuidModelConstance model) {//实现interface类中的方法
String modelName=model.getName();//获取要使用uuiddao的模块名
List<UuidModel> list=fileIoutil.readfile(FILE_NAME);//读取文件内容
for(UuidModel uuid:list){
if(uuid.getModelName().trim().equals(modelName)){//如果存在
int num=uuid.getCurrentName();//获取当前uuid的num
uuid.setCurrentName(num+1);//每调用一次uuid加1
fileIoutil.write(list, FILE_NAME);//重新写入
return String.valueOf(num);//将num转换成字符串
}

}

                //程序运行到这里说明之前次模块并没有调用过uuidDAO

int num=1;//初始化
UuidModel uuid=new UuidModel();//创建uuidModel对象
uuid.setCurrentName(num);
uuid.setModelName(modelName);
list.add(uuid);
fileIoutil.write(list, FILE_NAME);

return ""+num;//返回字符串
}
}

    3、factory工厂包,通过工厂调用impl中的方法(模块调用语句UuidDaoFactory .getUuidDAO.getNextNum())

public class UuidDaoFactory {
public static UuidDAO getUuidDAO(){
return new UuidDAOimpl();
}
}

在其他类的Ebo中通过String uuid=UuidDaoFactory.getUuidDAO().getNextNum(UuidModelConstance.USER);获取uuid





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值