Spring 04 基于xml的案例

四、基于 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 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 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 findAllAccount() {
      try{
      return runner.query("select * from account", new BeanListHandler(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.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 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 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





















posted @ 2020-06-23 13:05  Plorde  阅读(102)  评论(0)    收藏  举报