Catalog
  1. 1. Spring学习笔记(四)基于xml的IOC案例
    1. 1.1. 四、基于 xml 的 IOC 案例
Spring学习笔记(四)基于xml的IOC案例

Spring学习笔记(四)基于xml的IOC案例

四、基于 xml 的 IOC 案例

  1. 创建数据库

    create table account(
        id int primary key auto_increment,
        name varchar(40),
        money float
    )character set utf8 collate utf8_general_ci;
    
    insert into account(name,money) values('aaa',1000);
    insert into account(name,money) values('bbb',1000);
    insert into account(name,money) values('ccc',1000);
  2. 文件结构如下

  3. 创建接口

    • IAccountDao

      public interface IAccountDao {
      
          /**
           * 查询所有
           * @return
           */
          List<Account> findAllAccount();
      
          /**
           * 查询一个
           * @return
           */
          Account findAccountById(Integer accountId);
      
          /**
           * 保存
           * @param account
           */
          void saveAccount(Account account);
      
          /**
           * 更新
           * @param account
           */
          void updateAccount(Account account);
      
          /**
           * 删除
           * @param accountId
           */
          void deleteAccount(Integer accountId);
      }
    • IAccountService

      public interface IAccountService {
      
          /**
           * 查询所有
           * @return
           */
          List<Account> findAllAccount();
      
          /**
           * 查询一个
           * @return
           */
          Account findAccountById(Integer accountId);
      
          /**
           * 保存
           * @param account
           */
          void saveAccount(Account account);
      
          /**
           * 更新
           * @param account
           */
          void updateAccount(Account account);
      
          /**
           * 删除
           * @param accountId
           */
          void deleteAccount(Integer accountId);
      }
  4. 创建实现类

    • AccountDaoImpl

      public class AccountDaoImpl implements IAccountDao {
      
          private QueryRunner runner;
      
          public void setRunner(QueryRunner runner) {
              this.runner = runner;
          }
      
          public List<Account> findAllAccount() {
              try{
                  return runner.query("select * from account", new BeanListHandler<Account>(Account.class));
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
          }
      
          public Account findAccountById(Integer accountId) {
              try{
                  return runner.query("select * from account where id = ?", new BeanHandler<Account>(Account.class),accountId);
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
          }
      
          public void saveAccount(Account account) {
              try{
                  runner.update("insert into account(name, money) values(?,?)", account.getName(),account.getMoney());
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
          }
      
          public void updateAccount(Account account) {
              try{
                  runner.update("update account set name = ?, money = ? where id = ?", account.getName(),account.getMoney(),account.getId());
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
          }
      
          public void deleteAccount(Integer accountId) {
              try{
                  runner.update("delete from account where id = ?", accountId);
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
    • AccountServiceImpl

      public class AccountServiceImpl implements IAccountService {
      
          private IAccountDao accountDao;
      
          public void setAccountDao(IAccountDao accountDao) {
              this.accountDao = accountDao;
          }
      
          public List<Account> findAllAccount() {
              return accountDao.findAllAccount();
          }
      
          public Account findAccountById(Integer accountId) {
              return accountDao.findAccountById(accountId);
          }
      
          public void saveAccount(Account account) {
              accountDao.saveAccount(account);
          }
      
          public void updateAccount(Account account) {
              accountDao.updateAccount(account);
          }
      
          public void deleteAccount(Integer accountId) {
              accountDao.deleteAccount(accountId);
          }
      }
  5. 创建账户实体类

  • Account

    public class Account implements Serializable {
    
        private Integer id;
        private String name;
        private Float money;
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setMoney(Float money) {
            this.money = money;
        }
    
        public Integer getId() {
            return id;
        }
    
        public String getName() {
            return name;
        }
    
        public Float getMoney() {
            return money;
        }
    
        @Override
        public String toString() {
            return "Account{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", money=" + money +
                    '}';
        }
    }
  1. 创建测试类
  • AccountServiceTest

    public class AccountServiceTest {
    
        @Test
        public void testFindAll() {
            // 1.获取容器
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
            // 2.得到业务层对象
            IAccountService iAccountService = applicationContext.getBean("accountService",IAccountService.class);
            // 3.执行方法
            List<Account> accounts = iAccountService.findAllAccount();
            for (Account account : accounts) {
                System.out.println(account);
            }
        }
    
        @Test
        public void testFindOne() {
            // 1.获取容器
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
            // 2.得到业务层对象
            IAccountService iAccountService = applicationContext.getBean("accountService",IAccountService.class);
            // 3.执行方法
            Account account = iAccountService.findAccountById(1);
            System.out.println(account);
        }
    
        @Test
        public void testSave() {
            Account account = new Account();
            account.setName("test");
            account.setMoney(12345f);
            // 1.获取容器
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
            // 2.得到业务层对象
            IAccountService iAccountService = applicationContext.getBean("accountService",IAccountService.class);
            // 3.执行方法
            iAccountService.saveAccount(account);
        }
    
        @Test
        public void testUpdate() {
            // 1.获取容器
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
            // 2.得到业务层对象
            IAccountService iAccountService = applicationContext.getBean("accountService",IAccountService.class);
            // 3.执行方法
            Account account = iAccountService.findAccountById(4);
            account.setMoney(23456f);
            iAccountService.updateAccount(account);
        }
    
        @Test
        public void testDelete() {
            // 1.获取容器
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
            // 2.得到业务层对象
            IAccountService iAccountService = applicationContext.getBean("accountService",IAccountService.class);
            // 3.执行方法
            iAccountService.deleteAccount(4);
        }
    }
  1. 配置 bean.xml

    <beans xmlns=”http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--配置Service-->
    <bean id="accountService" class="com.greyson.service.impl.AccountServiceImpl">
        <!--注入dao-->
        <property name="accountDao" ref="accountDao"></property>
    </bean>
    
    <!--配置dao-->
    <bean id="accountDao" class="com.greyson.dao.impl.AccountDaoImpl">
        <!--注入runner-->
        <property name="runner" ref="runner"></property>
    </bean>
    
    <!--配置runner-->
    <bean id="runner" class="org.apache.commons.dbutils.QueryRunner" scope="prototype">
        <!--注入数据源-->
        <constructor-arg name="ds" ref="dataSource"></constructor-arg>
    </bean>
    
    <!--配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/eesy"></property>
        <property name="user" value="root"></property>
        <property name="password" value="HotteMYSQL"></property>
    </bean>
Author: zycode1561
Link: https://zycode1561.github.io/2019/11/07/Spring%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%88%E5%9B%9B%EF%BC%89%E5%9F%BA%E4%BA%8Exml%E7%9A%84IOC%E6%A1%88%E4%BE%8B/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付宝

Comment