Spring2.0中声明式事务管理(读spring2.0技术手册,林信良)

Spring2.0中声明式事务管理(<spring2.0技术手册>,林信良)<o:p></o:p>

<!---->1.    <!---->mysql中创建表user<o:p></o:p>

CREATE TABLE user (<o:p></o:p>

    id INT(11) NOT NULL auto_increment PRIMARY KEY,<o:p></o:p>

    name VARCHAR(100) NOT NULL default '',<o:p></o:p>

    age INT<o:p></o:p>

) Type = InnoDB;<o:p></o:p>

<!---->2.    <!---->编写userDAO<o:p></o:p>

public class UserDAO implements IUserDAO {<o:p></o:p>

    private JdbcTemplate jdbcTemplate;<o:p></o:p>

    <o:p></o:p>

    public void setDataSource(DataSource dataSource) {<o:p></o:p>

        jdbcTemplate = new JdbcTemplate(dataSource);<o:p></o:p>

    }<o:p></o:p>

    <o:p></o:p>

    public void insert(User user) {<o:p></o:p>

       String name = user.getName();<o:p></o:p>

       int age = user.getAge().intValue();<o:p></o:p>

       <o:p></o:p>

       jdbcTemplate.update("INSERT INTO user (name,age) " <o:p></o:p>

               + "VALUES('" + name + "'," + age + ")");<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    public User find(Integer id) {<o:p></o:p>

        List rows = jdbcTemplate.queryForList(<o:p></o:p>

          "SELECT * FROM user WHERE id=" + id.intValue());<o:p></o:p>

        <o:p></o:p>

        Iterator it = rows.iterator();<o:p></o:p>

        if(it.hasNext()) {<o:p></o:p>

            Map userMap = (Map) it.next();<o:p></o:p>

<o:p> </o:p>

            Integer i = new Integer(userMap.get("id").toString());<o:p></o:p>

            String name = userMap.get("name").toString();<o:p></o:p>

            Integer age = <o:p></o:p>

                  new Integer(userMap.get("age").toString());<o:p></o:p>

<o:p> </o:p>

            User user = new User();<o:p></o:p>

            user.setId(i);<o:p></o:p>

            user.setName(name);<o:p></o:p>

            user.setAge(age);<o:p></o:p>

            <o:p></o:p>

            return user;<o:p></o:p>

        }<o:p></o:p>

<o:p> </o:p>

        return null;<o:p></o:p>

    }<o:p></o:p>

}<o:p></o:p>

<!---->3.    <!---->配置文件<o:p></o:p>

<?xml version="1.0" encoding="UTF-8"?> <o:p></o:p>

<beans xmlns="http://www.springframework.org/schema/beans"<o:p></o:p>

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<o:p></o:p>

  xmlns:aop="http://www.springframework.org/schema/aop"<o:p></o:p>

  xmlns:tx="http://www.springframework.org/schema/tx"<o:p></o:p>

  xsi:schemaLocation="http://www.springframework.org/schema/beans <o:p></o:p>

  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd<o:p></o:p>

  http://www.springframework.org/schema/aop <o:p></o:p>

  http://www.springframework.org/schema/aop/spring-aop-2.0.xsd<o:p></o:p>

  http://www.springframework.org/schema/tx <o:p></o:p>

  http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><o:p></o:p>

  <o:p></o:p>

    <bean id="dataSource" <o:p></o:p>

          class="org.springframework.jdbc.datasource.DriverManagerDataSource"<o:p></o:p>

          destroy-method="close">  <o:p></o:p>

        <property name="driverClassName" <o:p></o:p>

                  value="com.mysql.jdbc.Driver"/> <o:p></o:p>

        <property name="url"<o:p></o:p>

                  value="jdbc:mysql://localhost:3306/demo"/><o:p></o:p>

        <property name="username" value="root"/> <o:p></o:p>

        <property name="password" value="root"/> <o:p></o:p>

    </bean> <o:p></o:p>

    <o:p></o:p>

    <bean id="transactionManager" <o:p></o:p>

          class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <o:p></o:p>

        <property name="dataSource" ref="dataSource"/> <o:p></o:p>

    </bean> <o:p></o:p>

    <o:p></o:p>

    <bean id="userDAO" <o:p></o:p>

          class="onlyfun.caterpillar.UserDAO"><o:p></o:p>

        <property name="dataSource" ref="dataSource"/><o:p></o:p>

    </bean><o:p></o:p>

    <o:p></o:p>

    <tx:advice id="txAdvice" transaction-manager="transactionManager"><o:p></o:p>

        <tx:attributes><o:p></o:p>

            <tx:method name="insert*" propagation="REQUIRED"/><o:p></o:p>

            <tx:method name="find*" read-only="true"/><o:p></o:p>

        </tx:attributes><o:p></o:p>

    </tx:advice><o:p></o:p>

  <o:p></o:p>

    <aop:config><o:p></o:p>

        <aop:pointcut id="userDAOPointcut" <o:p></o:p>

             expression="execution(* onlyfun.caterpillar.IUserDAO.*(..))"/>   //前面*表示任意返回类型,后面表示onlyfun.caterpillar.IUserDAO中的所有方法。<o:p></o:p>

        <aop:advisor advice-ref="txAdvice" pointcut-ref="userDAOPointcut"/><o:p></o:p>

    </aop:config><o:p></o:p>

<o:p> </o:p>

</beans><o:p></o:p>

<!---->4.    <!---->如果采用annotion 配置文件将会更简单:<o:p></o:p>

package onlyfun.caterpillar;<o:p></o:p>

<o:p> </o:p>

import java.util.Iterator;<o:p></o:p>

import java.util.List;<o:p></o:p>

import java.util.Map;<o:p></o:p>

<o:p> </o:p>

import javax.sql.DataSource;<o:p></o:p>

你可能感兴趣的:(spring,AOP,mysql,bean,配置管理)