[22/02/17]ポイントチャージ機能(2)-mybatis接続(復習)

13127 ワード

build.gradeに追加します。

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
  • リポジトリにMapperフォルダMemberMapperを作成します.xmlファイルを作成します.
  • application.yml

  • application.私はymlにmybatisと書きますが、resource>mapper>すべてのxmlを書くと言いました.
    ※この場合はスペースに注意!mybatisが貼り付けられ、mapper-locationが1つになります.
  • mybatis:
      #  #resources/mapper/ 에 있는 모든 xml 파일을 내가 매퍼로 쓸거다.
      mapper-locations: mapper/*.xml
      #alias설정
    #  type-aliases-package: com.phl.cocolo.dto

    MemberMapperRepository

  • インタフェースファイルを作成し、@Mapperを使用します.
    独自の方法でクエリーを作成します.
  • package com.phl.cocolo.repository;
    
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Update;
    
    import java.util.Map;
    
    @Mapper
    public interface MemberMapperRepository {
        //회원 포인트 충전
        @Update("update member_table set member_point = member_point + #{member_point} where member_id = #{member_id}")
        void pointCharge(Map<String, Object> memberPointUpdate);
    
        //회원목록 출력
        List<MemberDetailDTO> memberList();
        //회원가입
        void save(MemberSaveDTO memberSaveDTO);
    
        //mapper를 호출하지 않고 여기서 쿼리까지 수행하는 방식
        @Select("select * from member_table")
        List<MemberDetailDTO> memberList2();
    
        @Insert("insert into member_table(member_email,member_password,member_name) values (#{member_email},#{member_password},#{member_name})")
        void save2(MemberSaveDTO memberSaveDTO);
    }
    

    MemberMapper.xml

  • マッパー名空間にRepositoryアドレスを書き込みます.
    com.phl.cocolo.repository.MemberMapperRepository
  • <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.phl.cocolo.repository.MemberMapperRepository">
        <update id="pointCharge"  parameterType="java.util.HashMap">
            update member_table set member_point = member_point + #{member_point}
            where member_id = #{member_id}
        </update>
    
    
    
        <select id="memberList" resultType="com.phl.cocolo.dto.MemberDetailDTO">
            select * from member_table
        </select>
    
        <insert id="save" parameterType="com.phl.cocolo.dto.MemberSaveDTO">
            insert into member_table(member_email,member_password,member_name)
            values (#{member_email},#{member_password},#{member_name})
    
        </insert>
    
    </mapper>

    MemberServiceImpl

  • private final MemberMapperRepository mmr; Repositoryを呼び出します.
  •     @Override
        public void pointCharge(PointSaveDTO pointSaveDTO) {
            //포인트 이력 정보 저장
            MemberEntity memberEntity = mr.findById(pointSaveDTO.getMemberId()).get();
            PointEntity pointEntity = PointEntity.toPointSaveEntity(pointSaveDTO,memberEntity);
            pr.save(pointEntity);
    
            //회원 포인트 업데이트
            Map<String, Object> memberPointUpdate = new HashMap<>();
            memberPointUpdate.put("member_id", pointSaveDTO.getMemberId());
            memberPointUpdate.put("member_point", pointSaveDTO.getPointPoint());
    
            mmr.pointCharge(memberPointUpdate);
    
        }
    
    目だけで見ていると、私はあまり理解していませんが、自分の目で見ると、難しくありません.△エラーが発生したときに冷静に読むと、解決します.