学号由 年级号+系代号+专业代号+班级号+学生编号 组成,如何实现自动生成导入数据库中作为主键,去除人工输入的麻烦
年级,系别,专业,在入学的时候已经确定通过checkbox选择即可,所以只要分配班级,自动生成学生编号就行。学生编号由两位组成,第一个报到的为01,依次递增,例如2010 04 02 01 01
数据库建个编号的表
其中有模板 字段1 年级号+系代号+专业代号+班级号+学生编号 用符号能切割开 并且能区分开 字段2 当前编号 每次编号前用相应的代码replace模板 提交数据时 再获得一次编号 和页面传过来的对比 如果不一样 说明已经被使用 重新获得 或者提交时不让看到编号 提交后获得编号 这时就不用对比编号了 如果编号一样 就更新当前编号+1
你可以建立一个顺序号临时表,负责存储相关(这里可能设计很多逻辑,因为前面组合的不同对应最大值不同)最大值,系统根据规则取最大值,然后加1就取得对应值了,同时更新你相关最大值表。
同时如果是多用户使用需要考虑并发问题,推荐考虑锁机制,如hibernate的乐观锁悲观锁。
这类问题我也处理过,就是信用卡条形码生成,是多人多个分行同时处理,所以并发问题比生成还麻烦。