실전편: SSM 기반 스톱워치 시스템의 DAO 계층 구축

8430 단어
여러분은 이미 MVC모델을 잘 알고 계시기 때문에 다음에 이 모델에 따라 쓰겠습니다. 매일 DAO층의 구축을 소개합니다. 이 편은 대량의 코드가 관련되기 때문에 문장 끝에 Github의 주소를 제시하고 너무 많은 코드를 붙이지 않습니다.데이터베이스 디자인과 프로젝트 소개에 대해 아래 두 편의 글을 읽으십시오. 프로젝트 전체는 데이터베이스 디자인과 프로젝트 구축을 소개합니다.
솔리드 클래스 설계
이 시스템은 주로 두 가지 주요 실체류를 포함하는데 그것이 바로 Seckill[초살 상품의 실체류]와 Seckilled[초살 성공 실체류]이다.
Seckill(솔리드 클래스 초살)
//     ID

private long seckillId;

//       

private String name;

//       

private int number;

//       

private Date startTime;

//       

private Date endTime;

//       

private Date createTime;


Seckilled(솔리드 클래스 초살)
//      ID

private long seckillId;

//       

private long userPhone;

//       

private short state;

//       

private Date creteTime;

//         

private Seckill seckill;

스톱킬에 성공한 실체류에는 복합적인 속성이 포함되어 있다. 디자인표에서 알 수 있듯이seckillId는 외부 키이기 때문에 전시할 때 선택한 스톱킬에 성공한 실체류에 상품의 정보를 포함할 수 있도록 Seckill의 대상을 설정하여 관련 정보를 저장한다.
DAO 레이어 인터페이스 설계
Mybatis를 사용하기 때문에 먼저 인터페이스를 설계해야 한다. 주로 두 개의 인터페이스를 포함한다. 하나는 상품을 조작하는 것이고 하나는 초살 성공 관련 정보를 조작하는 것이다.
SeckillDao
/**

*    

*

* @param seckillId

* @param killTime

* @return         >1,         

*/

int reduceNumber(@Param("seckillId") long seckillId, @Param("killTime") Date killTime);

/**

*   id      

*

* @param seckillId

* @return

*/

Seckill queryById(long seckillId);

/**

*              

*

* @param offset

* @param limit

* @return

*/

List queryAll(@Param("offset") int offset, @Param("limit") int limit);


SuccessKilledDao
/**

*       ,     

*

* @param seckillId

* @param userPhone

* @return      

*

*/

int insertSuccessKilled(@Param("seckillId") long seckillId, @Param("userPhone") long userPhone);

/**

*   id  SuccessKilled           

*

* @param seckillId

* @param userPhone

* @return

*/

SuccessKilled queryByIdWithSeckill(@Param("seckillId") long seckillId, @Param("userPhone") long userPhone);

여기서 주요한 것은 모두 소개했습니다. 다음은 몇 가지 설정 파일의 작성입니다. 마퍼 파일의 작성과 Spring Spring MVC Mybatis의 일부 설정을 포함합니다. 모두 대체적으로 같은 설정이기 때문에 원본 코드의 구체적인 주소와 상세한 설명을 드리겠습니다. 만약에 모르는 것이 있으면 댓글로 해답을 남겨주세요.
Mapper 파일 구성
SeckillDao.xml



    
    
        
        UPDATE seckill
        SET number = number - 1
        WHERE
            seckill_id = #{seckillId}
        AND start_time  #{killTime}
        AND end_time >= #{killTime}
        AND number > 0
       
       
    
    
    


SuccessKilledDao.xml



    
        
        INSERT ignore INTO success_killed (seckill_id, user_phone, state)
        VALUES (#{seckillId}, #{userPhone}, 0)
    
    
    


Mybatis 구성 파일



    
    
        
        

        
        

        
        
    


데이터베이스 구성 파일
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/seckill?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=

로그 프로파일


    
        
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
        
    

    
        
    


Spring 구성 파일


    
    
    

    
    
        
        
        
        
        

        
        
        
        
        
        
        
        
        
    

    
    
        
        
        
        
        
        
        
        
    

    
    
        
        
        
        
    
    


여기까지만 하면 DAO층 구축이 끝났습니다. 여러분의 의견을 환영합니다.
구체적인 코드 주소는https://github.com/lctiter/seckill

좋은 웹페이지 즐겨찾기