庄生晓梦

庄生晓梦迷蝴蝶

博客园 首页 新随笔 联系 订阅 管理
学过SSH的都知道,整合了SSH之后,SSH的经典增删改查案例业务逻辑层的代码就十分简单.基本上都是一句话的事.
	public void addUser(Webuserlogin user) {
		//增
		this.getHibernateTemplate().save(user);

	}

	public void delUser(int userid) {
		//删
		this.getHibernateTemplate().delete(queryById(userid));
	}

	public Webuserlogin queryById(int userid) {
		//根据ID查询
		return this.getHibernateTemplate().get(Webuserlogin.class, userid);
	}

	public void updateUser(Webuserlogin user) {
		//改
		Webuserlogin users = this.queryById(user.getUserid());

		users.setUserrealname(user.getUserrealname());
		users.setUseraddress(user.getUseraddress());

		this.getHibernateTemplate().merge(users);

	}

	public List<Webuserlogin> queryList() {
		//查
		return this.getHibernateTemplate().find("From Webuserlogin");
	}

	public Webuserlogin loginWeb(Webuserlogin user) {
		//登陆 == 按用户名/密码查询
		List<Webuserlogin> list = this
				.getHibernateTemplate()
				.find(
						"From Webuserlogin wul Where wul.username =  ? and wul.userpwd= ?",
						user.getUsername(), user.getUserpwd());
		if (list != null && list.size() > 0) {
			return user;
		}
		return null;
	}

但是Spring的增删改查并没有将事务整合进去.给我们提供事务的切面,而在实际开发中,增删改查没有事务是非常不利于数据维护的.所以Spring在它的配置文件中给我们提供了用户自定义配置事务的方法.

	<!-- 使用事务!!! -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 配置事务中方法的属性 -->
	<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			
			<!-- update* 表示这个事务对 * com.services.*.*(..)中的update开头的方法都有效;
					对于一些只读(比如登陆)的数据,可以设置readonly=true-->
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="del*" propagation="REQUIRED" />
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="*" propagation="REQUIRED" />
		</tx:attributes>
	</tx:advice>
	<!--配置生效位置  -->
	<aop:config>
	<!-- 第一个星号:方法的返回值为次类型的值时生效(com.model.Webuserlogin/String);
			2.services中的哪一个类生效 userServices*;
			3.类中的何种方法生效del*;(..)方法中何种参数时生效 -->
		<aop:advisor advice-ref="transactionAdvice"	
			pointcut="execution(* com.services.*.*(..))" />
	</aop:config>
事务配置成功之后,在配置文件(applicationContext.xml)和serviceImpl层会有对应的call out--call in小电话

上图--



posted on 2016-12-31 23:05  qwop  阅读(218)  评论(0编辑  收藏  举报