个人不太喜欢用注解的方式,觉得用xml简单明了也便于修改。也可能是能力有限吧初学者
附上个人练习DEMO
2个接口及其实现,写得比较渣
package behavior;
import java.util.List;
public interface moreBehavior {
void buySome(String username,List<String> bookid);
}
package behavior;
public interface oneBehavior {
int checkBookMoney(String id);
int checkPersonMoney(String username);
int checkBookHave(String id);
void buyOne(String id,String username);
}
package behaviorImp;
import java.util.List;
import behavior.moreBehavior;
import behavior.oneBehavior;
public class moreBehaviorImp implements moreBehavior {
private oneBehavior ob;
public void setOb(oneBehavior ob) {
this.ob = ob;
}
public void buySome(String username, List<String> bookid) {
for(String id:bookid){
ob.buyOne(id, username);
}
}
}
package behaviorImp;
import org.springframework.jdbc.core.JdbcTemplate;
import behavior.oneBehavior;
public class oneBehaviorImp implements oneBehavior {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public int checkBookMoney(String id) {
String sql = "select sale from book where id = ?";
return jdbcTemplate.queryForInt(sql,id);
}
public int checkPersonMoney(String username) {
// TODO Auto-generated method stub
String sql = "select money from buyer where name = ?";
int result = jdbcTemplate.queryForInt(sql,username);
System.out.println(result);
return result;
}
public int checkBookHave(String id) {
String sql = "select have from book where id = ?";
return jdbcTemplate.queryForInt(sql,id);
}
public void buyOne(String id, String username) {
if(checkBookHave(id)<=0){
throw new RuntimeException("没有书了");
}else if(checkPersonMoney(username)<checkBookMoney(id)){
throw new RuntimeException("余额不足");
}else{
String sql = "update book set have = have -1 where id = ?";
jdbcTemplate.update(sql,id);
sql = "update buyer set money = money - ? where name = ?";
jdbcTemplate.update(sql,checkBookMoney(id),username);
}
}
}
以下附上XML配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
">
<!-- 导入资源文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置 C3P0 数据源 -->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean>
<!-- 配置 Spirng 的 JdbcTemplate -->
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="moreBehavior" class="behaviorImp.moreBehaviorImp">
<property name="ob" ref="oneBehavior"></property>
</bean>
<bean id="oneBehavior" class="behaviorImp.oneBehaviorImp">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice transaction-manager="dataSourceTransactionManager" id="ad">
<tx:attributes>
<tx:method name="buyOne" propagation="REQUIRES_NEW"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut expression="execution(* behavior.*.*(..))" id="pr"/>
<aop:advisor advice-ref="ad" pointcut-ref="pr"/>
</aop:config>
</beans>
初学Spring,写下来是为了日后回来看看修正修正!欢迎初学者一起交流!

被折叠的 条评论
为什么被折叠?



