浏览 3424 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-13
大家有什么更好的实现方法也可以给小弟共享下,谢谢; 作用:业务层 传一个 POJO对象 给 DAO , DAO 直接将其插入数据库; 1.IdFactory 类生成 随机无重复ID import java.util.ArrayList; import java.util.List; import java.util.Random; public class IdFactory { private static List<Integer> idList = new ArrayList(); private static int idIndex = 0; // 每次生成id数 private int ID_CREATE_NUMBER; // id的位数 private int ID_Max_POINT; private ObjectId objectId; private Random random; public IdFactory(ObjectId objectId){ this.objectId = objectId; init(); } private void init() { this.ID_CREATE_NUMBER = objectId.ID_CREATE_NUMBER; this.ID_Max_POINT = (int) Math.pow(10,objectId.ID_POSITION + 1); this.idList = objectId.getIdList(); this.idIndex = objectId.getIdIndex(); } public String getId() { if (idList.size() <= idIndex) { createId(ID_CREATE_NUMBER); } return idList.get(idIndex ++).toString(); } private void createId(int number) { random = new Random(); int size = idList.size(); int id = 0; for (int i = 0; i < ID_CREATE_NUMBER; i++) { id = random.nextInt(ID_Max_POINT); while (idList.contains(id)) { id = random.nextInt(ID_Max_POINT); } idList.add(id); } } public List getIdList(){ return this.idList; } public static void main(String[] args){ MessageId message = new MessageId(); UserId user = new UserId(); message.ID_POSITION = 3; IdFactory factory1 = new IdFactory(message); IdFactory factory2 = new IdFactory(user); System.out.println(factory1.getId()); System.out.println(factory2.getId()); } } 2.ID对象的父类 import java.util.ArrayList; import java.util.List; public class ObjectId { private static List<Integer> idList = new ArrayList(); private static int idIndex = 0; // 每次生成id数 public final int ID_CREATE_NUMBER = 100; // id的位数 public int ID_POSITION = 6; public static int getIdIndex() { return idIndex; } public static void setIdIndex(int idIndex) { ObjectId.idIndex = idIndex; } public static List<Integer> getIdList() { return idList; } public static void setIdList(List<Integer> idList) { ObjectId.idList = idList; } } 3.具体ID对象类(用户表User) public class UserId extends ObjectId { } 4.具体方法得到ID(这里是UserId) UserId user = new UserId(); user.ID_POSITION = 3; IdFactory factory = new IdFactory(message); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-13
Why not use GUID?
|
|
返回顶楼 | |
发表时间:2007-08-13
1.GUID的过于复杂,不适合做ID(不会采用分布式数据库)
2.本人关键想知道,如果在 POJO 中差入一个 ID 的话,应该怎么实现才合理 3.上面的代码有一个问题的问题,父类的静态变量会给所有的子类共享; |
|
返回顶楼 | |
发表时间:2007-08-14
感觉 入门讨论 没有什么人气,都要被气死了。。。
|
|
返回顶楼 | |
发表时间:2007-08-14
说实话,不知道你要干什么。
先说说你为什么这样做,这样做有什么好处。 |
|
返回顶楼 | |