mysql如何在一个表中插入数据的同时,更新另一个表的数据?
生活随笔
收集整理的這篇文章主要介紹了
mysql如何在一个表中插入数据的同时,更新另一个表的数据?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三種方案,你看看哪個比較適合你
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>
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>
總結
以上是生活随笔為你收集整理的mysql如何在一个表中插入数据的同时,更新另一个表的数据?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第三方软件要使用QQ邮箱进行发邮件相关设
- 下一篇: 浅谈 MySQL 的存储引擎(表类型)