Spring追加削除を実現

8633 ワード

spingを使用したIocの実装口座のCRUD(添削改ざん)
使用する知識点:
QueryRunner:SQL文の操作オブジェクト、クエリー結果セットのカプセル化ポリシーを設定できます
作成方法:QueryRunner runner=new QueryRunner(dataSource)
ResultSetHandler:データをカプセル化するポリシーのオブジェクト
BeanHandler:SQLクエリの結果セットをjavaBeanに変換する
Account account=runner.query(sql,new BeanHandler(Account.class),3);
BeanListHandler:SQLクエリの結果セットを1つのセットのオブジェクトに変換し、javaBeanを格納
使用法:list list=runner.query(sql,new BeanListHandler(Account.class);
pom.xmlに必要な依存

    
        commons-dbutils
        commons-dbutils
        1.4
    
    
    
        c3p0
        c3p0
        0.9.1.2
    
    
        mysql
        mysql-connector-java
        5.1.6
    
    
        junit
        junit
        4.12
    
    
        org.springframework
        spring-context
        5.0.2.RELEASE
    

データベースと作成されたエンティティークラスの作成
テーブル構造とデータ
SQL文
CREATE TABLE account(
id int primary key AUTO_increment,
name varchar(40),
money float
);
insert into account(name,money) values('aaa',1000); insert into account(name,money) values('bbb',1000); insert into account(name,money) values('ccc',1000);
アカウントのエンティティークラスAccount(domain)
package com.itheiam.domain;

import lombok.Data;
import lombok.ToString;

import java.io.Serializable;
@Data
@ToString
public class Account implements Serializable {
    private Integer id;
    private String name;
    private Float money;
}

永続層の作成(Dao)
/***
*        
***/
public interface AccountDao {

    /**
     *   
     * @param account
     */
    void save(Account account);

    /**
     *   
     * @param account
     */
    void update(Account account);

    /**
     *   
     * @param accountId
     */
    void delete(Integer accountId);

    /**
     *   id  
     * @param accountId
     * @return
     */
    Account findById(Integer accountId);

    /**
     *     
     * @return
     */
    List findAll();
}

アカウントの永続層の実装クラス(AccountDaoImpl)
/***
*           
***/
public class AccountDaoImpl implements AccountDao {

    private QueryRunner runner;

    /**
     *     
     * @param account
     */
    public void save(Account account) {
        try {
            runner.update("insert into account(name,money)values(?,?)",account.getName(),account.getMoney());
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /***
     *     
     * @param account
     */
    public void update(Account account) {
        try {
            runner.update("update account set name=?,money=? where id=?",account.getName(),account.getMoney(),account.getId());
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     *     
     * @param accountId
     */
    public void delete(Integer accountId) {
        try {
            runner.update("delete from account where id=?",accountId);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     *   ID  
     * @param accountId
     * @return
     */
    public Account findById(Integer accountId) {
        try {
            return runner.query("select * from account where id=?",new BeanHandler(Account.class),accountId);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return  null;
    }

    /***
     *     
     * @return
     */
    public List findAll() {
        try {
            return runner.query("select * from account",new BeanListHandler(Account.class));
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return  null;
    }

    /***
     *   QueryRunner  
     * @param runner
     */
    public void setRunner(QueryRunner runner) {
        this.runner = runner;
    }
}

ビジネス・レベルのインタフェースの作成(Service)
/****
*      
***/
public interface AccountService {

    /**
     *   
     * @param account
     */
    void save(Account account);

    /**
     *   
     * @param account
     */
    void update(Account account);

    /**
     *   
     * @param accountId
     */
    void delete(Integer accountId);

    /**
     *   id  
     * @param accountId
     * @return
     */
    Account findById(Integer accountId);

    /**
     *     
     * @return
     */
    List findAll();
}

ビジネス層実装クラスの作成(AccountServiceImpl)
/****
*         
***/
public class AccountServiceImpl implements AccountService {
    private AccountDao accountDao;

    public void save(Account account) {
        accountDao.save(account);
    }

    public void update(Account account) {
        accountDao.update(account);
    }

    public void delete(Integer accountId) {
        accountDao.delete(accountId);
    }

    public Account findById(Integer accountId) {
        return accountDao.findById(accountId);
    }

    public List findAll() {
        return accountDao.findAll();
    }

    public void setAccountDao(AccountDao accountDao) {
        this.accountDao = accountDao;
    }

プロファイルXMLの作成



    
    
        
    

    
    
        
    

    
    
        
    

    
    
        
        
        
        
    

テストコードの作成(Test)
public class AccountServiceTest {

    private AccountService accountService;

    @Before
    public void init(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
        accountService = ac.getBean(AccountService.class);
    }

    /**
     *   
     */
    @Test
    public void testSave(){
        Account account = new Account();
        account.setMoney(999f);
        account.setName("  ");

        accountService.save(account);
    }

    /**
     *   
     */
    @Test
    public void testUpdate(){
        //   id=3   ,   
        Account account = accountService.findById(4);
        account.setName("zhangsan");
        //  
        accountService.update(account);
    }

    /**
     *   
     */
    @Test
    public void testDelete(){
        Integer accountId=3;
        accountService.delete(accountId);
    }

    /**
     *   id  
     * @return
     */
    @Test
    public void testFindById(){
        Integer accountId=3;
        Account account = accountService.findById(accountId);
        System.out.println(account);
    }

    /**
     *     
     * @return
     */
    @Test
    public void testFindAll(){
        List accounts = accountService.findAll();
        for (Account account : accounts) {
            System.out.println(account);
        }
    }
}