三种方案,你看看哪个比较适合你
1,适用于学生: 写两个方法,一个新增一个更新,在新增完了以后马上去查询一下,按主键倒叙排列,取到最新插入的id,前提主键是自增的且不是uuid,然后把查到的主键返回出去作为形参让更新方法接收到,然后更新即可.
2,适用于ssh框架: 写两个事务,事务的传播特性是REQUIRED.添加的事务实现序列化(synchronized)
public Serializable Long saveOoxx(Object obj){
// 之前已有session工厂工具类,直接拿即可,不用另开
Session session = getSession();
// 对象封装 略...
Serializable oId = session.save(obj);
// 具体业务逻辑 略...
return (Long)oId; // 把这个扔出去就可以了
// 为什么一定要实现序列化?看java基础,百度会告诉你的
}
save之后返回值就是你之前save进数据库表的主键,将他返回出来,传给update事务,更新即可
3,适用于中高端人士,也是现在主流的解决方案,基础没过关的请参考1.2:配置一个触发器,以下我只简单介绍一下时间类触发器,具体应用还是自己想办法吧,不能全说了.....
<bean id = "你自己的工作类" class = "包名.类名.方法名"></bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="jobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="quartzJob"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>work</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobTask"/>
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<!-- 30分钟一次 -->
<value>0 */30 * * * ? </value>
</property>
</bean>
<!-- 最后需要配置一个总管理类 -- >
<!-- lazy-init="false"则容器一旦被实例化则自动开始计时 -- >
<bean id="startQuartz" lazy-init="false" autowire="no class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTime"/>
</list>
</property>
</bean>