这回出现了问题,报空指针,是因为我没有开启扫描器
1、用户服务层接口
* 用户持久层接口
*/
public interface UserDao {
//修改用户密码
public void updateUserPsw(String uid, String psw) throws Exception;
}
2、用户服务层接口实现
*
* 用户持久层接口实现
*/
public class UserDaoImp implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void updateUserPsw(String uid, String psw) throws Exception {
String sql = " update user set psw = ? where uid = ? ";
jdbcTemplate.update(sql, psw, uid);
}
}
3、用户持久层接口
* 用户持久层接口
*/
public interface UserDao {
//修改用户密码
public void updateUserPsw(String uid, String psw) throws Exception;
}
4、用户持久层接口实现
*
* 用户持久层接口实现
*/
public class UserDaoImp implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void updateUserPsw(String uid, String psw) throws Exception {
String sql = " update user set psw = ? where uid = ? ";
jdbcTemplate.update(sql, psw, uid);
}
}
5、XML(ApplicationContext.xml我的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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 一定要开启扫描器 -->
<context:component-scan base-package="com.company"></context:component-scan>
<!-- 导入数据源信息 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置c3p0连接池配置 -->
<bean id="c3p0ID" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="driverClass" value="${jdbc.driver}"/>
</bean>
<!-- 事务分三部走 -->
<!-- s1配置事务管理器(transactionManager) -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 和数据库建立连接(毕竟是管理数据库的)(事务(transaction)) -->
<property name="dataSource" ref="c3p0ID"/>
</bean>
<!-- s2配置事务增强规则 -->
<!-- advice(意见;建议) -->
<!-- 要加id -->
<tx:advice id="txid" transaction-manager="txManager">
<tx:attributes>
<!-- 一定要是*Account(可能还有其他,暂时我还不知道) -->
<tx:method name="*Account"/>
</tx:attributes>
</tx:advice>
<!-- s3配置Aop切面和切点 -->
<aop:config>
<!-- 切点 -->
<aop:pointcut id="pointcut1" expression="execution(* com.company.service.UserServiceImp.exChangeAccount(..))"/>
<!-- 切面 -->
<!-- 面指向事务增强规则 点指向切点上面一个-->
<aop:advisor advice-ref="txid" pointcut-ref="pointcut1"/>
</aop:config>
<!-- 配置jdbc模板(jdbcTemplate) -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 和数据库建立连接 -->
<property name="dataSource" ref="c3p0ID"/>
</bean>
<!-- 创建UserDaoImp对象 -->
<bean id="userDaoImpID" class="com.company.dao.UserDaoImp"></bean>
<!-- 创建UserServiceImp对象 -->
<bean id="userServiceImpID" class="com.company.service.UserServiceImp"></bean>
</beans>