在项目中为多个模块创建uuid,以及唱票算法
2017-03-14 23:07
148 查看
我们在为项目进行用户添加时,不能让用户自行为自己添加id
我们应该在逻辑层调用某种模块来自动为添加的用户创建id
所以我们要在common包中为其创建一个uuid模块
uuid模块包括:dao,vo,constance分别为数据层,值对象,枚举类型
vo层:
public class UuidModel implements Serializable{
private String ModelName
//模块类型名
private int currentNum //自动分配的id
public String getModelName() {
return ModelName;
}
public void setModelName(String modelName) {
ModelName = modelName;
}
public int getCurrentNum() {
return CurrentNum;
}
public void setCurrentNum(int currentNum) {
CurrentNum = currentNum;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((ModelName == null) ? 0 : ModelName.hashCode());
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 (ModelName == null) {
if (other.ModelName != null)
return false;
} else if (!ModelName.equals(other.ModelName))
return false;
return true;
}
}
dao层
impl实现类:uuidImpl
public class uuidImpl implements UuidDao{
private final String FILE_NAME:"uuid.txt";
@Override
public String getUuid(UuidModelConstance UuidEnum) {
String ModelName=UuidEnum.getModelName();
List<uuidModel> list =FileIoUtils.readFromFile(FILE_NAME);//从uuid.txt中读取该模块存入list中
for(UuidModel model:list){
if(model.getModelName.equals(ModelName)){//遍历这个list,如果匹配到相同类型名的就进行uuid的返回
int result=model.getCurrentNum();
model.setCurrentNum(result+1);//下一次同一模块来访问的时候uuid则会+1,这就是唱票算法
list.add(model);
FileIoUtils.write2File(list,FILE_NAME);
return String.valusof(result);
}
}
//遍历完后如果没有匹配到则表明文件中还没有该类型,则需要重新创建
UuidModel model=new UuidModel();
model.setModelName(ModelName);
model.setCurrentNum(2);
list.add(model);
FileIoUtils.write2File(list,FILE_NAME);
return "1";
}
这样我们就可以在逻辑层设计在添加某模块数据时,封装uuid,然后进行添加。
我们应该在逻辑层调用某种模块来自动为添加的用户创建id
所以我们要在common包中为其创建一个uuid模块
uuid模块包括:dao,vo,constance分别为数据层,值对象,枚举类型
vo层:
public class UuidModel implements Serializable{
private String ModelName
//模块类型名
private int currentNum //自动分配的id
public String getModelName() {
return ModelName;
}
public void setModelName(String modelName) {
ModelName = modelName;
}
public int getCurrentNum() {
return CurrentNum;
}
public void setCurrentNum(int currentNum) {
CurrentNum = currentNum;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((ModelName == null) ? 0 : ModelName.hashCode());
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 (ModelName == null) {
if (other.ModelName != null)
return false;
} else if (!ModelName.equals(other.ModelName))
return false;
return true;
}
}
dao层
impl实现类:uuidImpl
public class uuidImpl implements UuidDao{
private final String FILE_NAME:"uuid.txt";
@Override
public String getUuid(UuidModelConstance UuidEnum) {
String ModelName=UuidEnum.getModelName();
List<uuidModel> list =FileIoUtils.readFromFile(FILE_NAME);//从uuid.txt中读取该模块存入list中
for(UuidModel model:list){
if(model.getModelName.equals(ModelName)){//遍历这个list,如果匹配到相同类型名的就进行uuid的返回
int result=model.getCurrentNum();
model.setCurrentNum(result+1);//下一次同一模块来访问的时候uuid则会+1,这就是唱票算法
list.add(model);
FileIoUtils.write2File(list,FILE_NAME);
return String.valusof(result);
}
}
//遍历完后如果没有匹配到则表明文件中还没有该类型,则需要重新创建
UuidModel model=new UuidModel();
model.setModelName(ModelName);
model.setCurrentNum(2);
list.add(model);
FileIoUtils.write2File(list,FILE_NAME);
return "1";
}
这样我们就可以在逻辑层设计在添加某模块数据时,封装uuid,然后进行添加。
相关文章推荐
- Maven入门,Maven项目的创建,nexus 2.x搭建私服以及Maven多模块项目创建
- maven父子聚合项目,以及文件夹下创建多个项目提交到源码仓库中
- IDEA创建多个模块MavenSpringBoot项目
- asp.net用网络管理工具来创建项目的角色(Roles)以及完成权限控制遇到的问题(基于MusicStore项目)
- .net同一个解决方案下面多个web项目。目的为了较大项目分解模块,各自编译开发!
- PetShop 4.0 设计研究——petShop 4.0 的命名空间 以及各个项目模块的说明
- petShop 4.0 的命名空间 以及各个项目模块的说明
- PetShop 4.0 设计研究——petShop 4.0 的命名空间 以及各个项目模块的说明
- Maven介绍(创建工程项目以及下载所需要的jar包)
- 使用maven创建多模块web项目
- eclipse中创建一个专门存储jar档的工程,供多个项目引用
- 使用Away3D 4 和 Stage 3D创建3D游戏以及应用程序—第一部分:30分钟内建立一个3D项目
- PetShop 4.0 设计研究——petShop 4.0 的命名空间 以及各个项目模块的说明
- C++ VS 2008中ATL的创建,使用。并在C++项目以及C#项目中进行调用测试
- Flex快速入门系列之二:FlashBuilder创建项目以及远程JAVA对象访问(包括spring)篇
- 使用Maven创建多模块项目
- PetShop 4.0 设计研究——petShop 4.0 的命名空间 以及各个项目模块的说明
- PetShop 4.0 设计研究——petShop 4.0 的命名空间 以及各个项目模块的说明
- petShop 4.0 的命名空间 以及各个项目模块的说明
- Maven介绍(创建工程项目以及下载所需要的jar包)