쭈쌤
쭈쌤 Hello World

[수업관련] MySQL 정보를 토대로 POJO,Mapper,Service 소스를 자동 생성하는 프로그램

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[수업관련] MySQL 정보를 토대로 POJO,Mapper,Service 소스를 자동 생성하는 프로그램≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

[수업관련] MySQL 정보를 토대로 POJO,Mapper,Service 소스를 자동 생성하는 프로그램

MySQL의 테이블 정보를 읽어와서 Spring 프로젝트 구조에 맞는 POJO클래스와 MyBatis Mapper, Service 패턴의 인터페이스 및 구현체 클래스를 자동으로 생성하는 파이썬 스크립트 입니다.

이미 훈련이 종료된 수강생분들 중 아래의 내용에 관심이 있는 분들은 개별적으로 연락 주세요.

#01. 기본 준비

1) Python 설치하기

이 작업을 위해서는 파이썬이 필요합니다.

여기를 눌러 파이썬 설치파일을 내려받아 설치합니다.

설치시 주의사항

설치 첫 화면에서 “Add Python 3.x to PATH” 항목을 반드시 체크합니다.

about_contribute_install_windows_installer.png

2) 프로그램 설치

파이썬 프로그램은 수업시간에 배포합니다.

배포된 파일의 압축을 해제하고 install.bat 파일을 실행합니다.

9

3) MySQL 테이블 준비

다음과 같은 MySQL 테이블이 있다고 가정하겠습니다.

테이블 자체와 각 컬럼에 대한 comment를 꼭 기입해 주세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
create table members (
    id          int             not null auto_increment comment '일련번호',
    user_id     varchar(30)     not null comment '아이디',
    user_pw     varchar(255)    not null comment '비밀번호(암호화저장)',
    user_name   varchar(30)     not null comment '회원이름',
    email       varchar(255)    not null comment '이메일',
    phone       varchar(20)     not null comment '연락처',
    birthday    date            not null comment '생년월일',
    gender      char(1)         not null comment '성별(M=남자,F=여자)',
    postcode    char(5)         not null comment '우편번호',
    addr1       varchar(255)    not null comment '검색된 주소',
    addr2       varchar(255)    not null comment '나머지 주소',
    photo       blob                null comment '프로필사진 정보{json=UploadItem}',
    is_out      char(1)         not null comment '탈퇴여부(Y/N)',
    is_admin    char(1)         not null comment '관리자 여부(Y/N)',
    login_date  datetime            null comment '마지막 로그인 일시',
    reg_date    datetime        not null comment '등록일시',
    edit_date   datetime        not null comment '변경일시',
    PRIMARY KEY (id)
) engine innodb default charset utf8 comment '회원';

4) Python 코드 설정값 수정

create_src.py 파일을 텍스트 편집기로 열어서 아래의 항목들을 프로젝트 상황에 맞게 수정합니다.

윈도우의 경우도 경로를 명시할 때 슬래시(/)를 사용하세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# ------------------------------------------------------------
# configurations
# ------------------------------------------------------------
# 스프링 프로젝트 경로
PROJECT_ROOT = "/Users/leekh/workspace-eclipse/SpringMyShop"

# 스프링 프로젝트 패키지 이름
PACKAGE_NAME = "study.spring.springmyshop"

# 데이터베이스 정보
DB_HOST = "localhost"
DB_PORT = 3306
DB_USER = "root"
DB_PASS = "root"
DB_NAME = "springmyshop"
DB_CHARSET = "UTF-8"

# 작업시 제외할 테이블 이름 명시
# 필요 없을 경우 `[]` 안을 비워둡니다.
IGNORE_TABLES = ['mytable1', 'mytable2']

#02. 실행하기

run.bat 파일을 더블클릭하여 실행합니다.

Mac의 경우 터미널에서 py소스코드가 있는 위치로 이동한 후 python3 create_src.py 명령을 직접 입력하세요.

실행이 정상적으로 되면 아래와 같이 생성된 파일들의 경로가 출력됩니다.

output.png

#03. 자동으로 생성된 결과물 확인

수업시간에 진행한 기본 기능들에 대한 소스코드가 자동으로 생성됩니다. 주석도 자동으로 생성됩니다.

만약 동일한 이름의 파일이 이미 존재한다면 기존의 파일이름 뒤에 날짜값이 붙는 형태로 백업됩니다.

POJO 클래스 (Beans)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
package study.spring.springmyshop.model;

import com.google.gson.Gson;
import study.spring.springmyshop.helper.UploadItem;

/** `회원` 테이블의 POJO 클래스 (20/05/06 06:58:21) */
public class Members {
    /** 일련번호, IS NOT NULL, PRI */
    private int id;

    /** 아이디, IS NOT NULL */
    private String userId;

    /** 비밀번호(암호화저장), IS NOT NULL */
    private String userPw;

    /** 회원이름, IS NOT NULL */
    private String userName;

    /** 이메일, IS NOT NULL */
    private String email;

    /** 연락처, IS NOT NULL */
    private String phone;

    /** 생년월일, IS NOT NULL */
    private String birthday;

    /** 성별(M=남자,F=여자), IS NOT NULL */
    private String gender;

    /** 우편번호, IS NOT NULL */
    private String postcode;

    /** 검색된 주소, IS NOT NULL */
    private String addr1;

    /** 나머지 주소, IS NOT NULL */
    private String addr2;

    /** 프로필사진 정보{json=UploadItem}, IS NULL */
    private UploadItem photo;

    /** 탈퇴여부(Y/N), IS NOT NULL */
    private String isOut;

    /** 관리자 여부(Y/N), IS NOT NULL */
    private String isAdmin;

    /** 마지막 로그인 일시, IS NULL */
    private String loginDate;

    /** 등록일시, IS NOT NULL */
    private String regDate;

    /** 변경일시, IS NOT NULL */
    private String editDate;

    /** 일련번호, IS NOT NULL, PRI */
    public void setId(int id) {
        this.id = id;
    }

    /** 일련번호, IS NOT NULL, PRI */
    public int getId() {
        return this.id;
    }

    /** 아이디, IS NOT NULL */
    public void setUserId(String userId) {
        this.userId = userId;
    }

    /** 아이디, IS NOT NULL */
    public String getUserId() {
        return this.userId;
    }

    /** 비밀번호(암호화저장), IS NOT NULL */
    public void setUserPw(String userPw) {
        this.userPw = userPw;
    }

    /** 비밀번호(암호화저장), IS NOT NULL */
    public String getUserPw() {
        return this.userPw;
    }

    /** 회원이름, IS NOT NULL */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /** 회원이름, IS NOT NULL */
    public String getUserName() {
        return this.userName;
    }

    /** 이메일, IS NOT NULL */
    public void setEmail(String email) {
        this.email = email;
    }

    /** 이메일, IS NOT NULL */
    public String getEmail() {
        return this.email;
    }

    /** 연락처, IS NOT NULL */
    public void setPhone(String phone) {
        this.phone = phone;
    }

    /** 연락처, IS NOT NULL */
    public String getPhone() {
        return this.phone;
    }

    /** 생년월일, IS NOT NULL */
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    /** 생년월일, IS NOT NULL */
    public String getBirthday() {
        return this.birthday;
    }

    /** 성별(M=남자,F=여자), IS NOT NULL */
    public void setGender(String gender) {
        this.gender = gender;
    }

    /** 성별(M=남자,F=여자), IS NOT NULL */
    public String getGender() {
        return this.gender;
    }

    /** 우편번호, IS NOT NULL */
    public void setPostcode(String postcode) {
        this.postcode = postcode;
    }

    /** 우편번호, IS NOT NULL */
    public String getPostcode() {
        return this.postcode;
    }

    /** 검색된 주소, IS NOT NULL */
    public void setAddr1(String addr1) {
        this.addr1 = addr1;
    }

    /** 검색된 주소, IS NOT NULL */
    public String getAddr1() {
        return this.addr1;
    }

    /** 나머지 주소, IS NOT NULL */
    public void setAddr2(String addr2) {
        this.addr2 = addr2;
    }

    /** 나머지 주소, IS NOT NULL */
    public String getAddr2() {
        return this.addr2;
    }

    /** 프로필사진 정보{json=UploadItem}, IS NULL */
    public void setPhotoJson(String photo) {
        this.photo = new Gson().fromJson(photo, UploadItem.class);
    }

    /** 프로필사진 정보{json=UploadItem}, IS NULL */
    public void setPhoto(UploadItem photo) {
        this.photo = photo;
    }

    /** 프로필사진 정보{json=UploadItem}, IS NULL */
    public UploadItem getPhoto() {
        return this.photo;
    }

    /** 프로필사진 정보{json=UploadItem}, IS NULL */
    public String getPhotoJson() {
        return new Gson().toJson(this.photo);
    }

    /** 탈퇴여부(Y/N), IS NOT NULL */
    public void setIsOut(String isOut) {
        this.isOut = isOut;
    }

    /** 탈퇴여부(Y/N), IS NOT NULL */
    public String getIsOut() {
        return this.isOut;
    }

    /** 관리자 여부(Y/N), IS NOT NULL */
    public void setIsAdmin(String isAdmin) {
        this.isAdmin = isAdmin;
    }

    /** 관리자 여부(Y/N), IS NOT NULL */
    public String getIsAdmin() {
        return this.isAdmin;
    }

    /** 마지막 로그인 일시, IS NULL */
    public void setLoginDate(String loginDate) {
        this.loginDate = loginDate;
    }

    /** 마지막 로그인 일시, IS NULL */
    public String getLoginDate() {
        return this.loginDate;
    }

    /** 등록일시, IS NOT NULL */
    public void setRegDate(String regDate) {
        this.regDate = regDate;
    }

    /** 등록일시, IS NOT NULL */
    public String getRegDate() {
        return this.regDate;
    }

    /** 변경일시, IS NOT NULL */
    public void setEditDate(String editDate) {
        this.editDate = editDate;
    }

    /** 변경일시, IS NOT NULL */
    public String getEditDate() {
        return this.editDate;
    }

    @Override
    public String toString() {
        String str = "\n[Members]\n";
        str += "id: " + this.id + " (일련번호, IS NOT NULL, PRI)\n";
        str += "userId: " + this.userId + " (아이디, IS NOT NULL)\n";
        str += "userPw: " + this.userPw + " (비밀번호(암호화저장), IS NOT NULL)\n";
        str += "userName: " + this.userName + " (회원이름, IS NOT NULL)\n";
        str += "email: " + this.email + " (이메일, IS NOT NULL)\n";
        str += "phone: " + this.phone + " (연락처, IS NOT NULL)\n";
        str += "birthday: " + this.birthday + " (생년월일, IS NOT NULL)\n";
        str += "gender: " + this.gender + " (성별(M=남자,F=여자), IS NOT NULL)\n";
        str += "postcode: " + this.postcode + " (우편번호, IS NOT NULL)\n";
        str += "addr1: " + this.addr1 + " (검색된 주소, IS NOT NULL)\n";
        str += "addr2: " + this.addr2 + " (나머지 주소, IS NOT NULL)\n";
        str += "photo: " + this.photo + " (프로필사진 정보{json=UploadItem}, IS NULL)\n";
        str += "isOut: " + this.isOut + " (탈퇴여부(Y/N), IS NOT NULL)\n";
        str += "isAdmin: " + this.isAdmin + " (관리자 여부(Y/N), IS NOT NULL)\n";
        str += "loginDate: " + this.loginDate + " (마지막 로그인 일시, IS NULL)\n";
        str += "regDate: " + this.regDate + " (등록일시, IS NOT NULL)\n";
        str += "editDate: " + this.editDate + " (변경일시, IS NOT NULL)\n";
        return str;
    }
}

MyBatis Mapper

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?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="MembersMapper">
    <!-- Beans의 멤버변수(property)이름과 대상 테이블의 컬럼(column)을 연결한다. -->
    <resultMap id="membersMap" type="study.spring.springmyshop.model.Members">
        <!-- 일련번호, IS NOT NULL, PRI -->
        <result property="id" column="id" />
        <!-- 아이디, IS NOT NULL -->
        <result property="userId" column="user_id" />
        <!-- 비밀번호(암호화저장), IS NOT NULL -->
        <result property="userPw" column="user_pw" />
        <!-- 회원이름, IS NOT NULL -->
        <result property="userName" column="user_name" />
        <!-- 이메일, IS NOT NULL -->
        <result property="email" column="email" />
        <!-- 연락처, IS NOT NULL -->
        <result property="phone" column="phone" />
        <!-- 생년월일, IS NOT NULL -->
        <result property="birthday" column="birthday" />
        <!-- 성별(M=남자,F=여자), IS NOT NULL -->
        <result property="gender" column="gender" />
        <!-- 우편번호, IS NOT NULL -->
        <result property="postcode" column="postcode" />
        <!-- 검색된 주소, IS NOT NULL -->
        <result property="addr1" column="addr1" />
        <!-- 나머지 주소, IS NOT NULL -->
        <result property="addr2" column="addr2" />
        <!-- 프로필사진 정보{json=UploadItem}, IS NULL -->
        <result property="photoJson" column="photo" />
        <!-- 탈퇴여부(Y/N), IS NOT NULL -->
        <result property="isOut" column="is_out" />
        <!-- 관리자 여부(Y/N), IS NOT NULL -->
        <result property="isAdmin" column="is_admin" />
        <!-- 마지막 로그인 일시, IS NULL -->
        <result property="loginDate" column="login_date" />
        <!-- 등록일시, IS NOT NULL -->
        <result property="regDate" column="reg_date" />
        <!-- 변경일시, IS NOT NULL -->
        <result property="editDate" column="edit_date" />
    </resultMap>

    <!-- 단일행 조회를 위한 기능 정의 -->
    <select id="selectItem" parameterType="study.spring.springmyshop.model.Members" resultMap="membersMap">
        SELECT id, user_id, user_pw, user_name, email, phone, birthday, gender, postcode, addr1, addr2, photo, is_out, is_admin, login_date, reg_date, edit_date FROM members WHERE id=#{id}
    </select>

    <!-- 다중행 조회를 위한 기능 정의 -->
    <select id="selectList" parameterType="study.spring.springmyshop.model.Members" resultMap="membersMap">
        SELECT id, user_id, user_pw, user_name, email, phone, birthday, gender, postcode, addr1, addr2, photo, is_out, is_admin, login_date, reg_date, edit_date FROM members
        ORDER BY id DESC
        <if test="listCount > 0">
            LIMIT #{offset}, #{listCount}
        </if>
    </select>

    <!-- 데이터 수 조회를 위한 기능 정의 -->
    <select id="selectCountAll" parameterType="study.spring.springmyshop.model.Members" resultType="int">
        SELECT COUNT(*) FROM members
    </select>

    <!-- 데이터 저장을 위한 기능 정의 -->
    <insert id="insertItem" parameterType="study.spring.springmyshop.model.Members" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO members (
            user_id, user_pw, user_name, email, phone, birthday, gender, postcode, addr1, addr2, photo, is_out, is_admin, login_date, reg_date, edit_date
        ) VALUES (
            #{userId}, #{userPw}, #{userName}, #{email}, #{phone}, #{birthday}, #{gender}, #{postcode}, #{addr1}, #{addr2}, #{photoJson}, #{isOut}, #{isAdmin}, #{loginDate}, now(), now()
        )
    </insert>

    <!-- 데이터 삭제를 위한 기능 정의 -->
    <delete id="deleteItem" parameterType="study.spring.springmyshop.model.Members">
        DELETE FROM members WHERE id=#{id}
    </delete>

    <!-- 데이터 갱신을 위한 기능 정의 -->
    <update id="updateItem" parameterType="study.spring.springmyshop.model.Members">
        UPDATE members SET 
            user_id=#{userId},
            user_pw=#{userPw},
            user_name=#{userName},
            email=#{email},
            phone=#{phone},
            birthday=#{birthday},
            gender=#{gender},
            postcode=#{postcode},
            addr1=#{addr1},
            addr2=#{addr2},
            photo=#{photoJson},
            is_out=#{isOut},
            is_admin=#{isAdmin},
            login_date=#{loginDate},
            edit_date=now()
        WHERE id=#{id}
    </update>

</mapper>

Service Interface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package study.spring.springmyshop.service;

import java.util.List;
import study.spring.springmyshop.model.Members;

public interface MembersService {

    /**
     * 회원 데이터 상세 조회
     * @param input 조회할 데이터의 일련번호(PK)를 담고 있는 Beans
     * @return 조회된 데이터가 저장된 Beans
     * @throws Exception
     */
    public Members getMembersItem(Members input) throws Exception;

    /**
     * 회원 데이터 목록 조회
     * @param input 검색조건과 페이지 구현 정보를 담고 있는 Beans
     * @return 조회 결과에 대한 컬렉션
     * @throws Exception
     */
    public List<Members> getMembersList(Members input) throws Exception;

    /**
     * 회원 데이터가 저장되어 있는 갯수 조회
     * @param input 검색조건을 담고 있는 Beans
     * @return int
     * @throws Exception
     */
    public int getMembersCount(Members input) throws Exception;

    /**
     * 회원 데이터 등록하기
     * @param input 저장할 정보를 담고 있는 Beans
     * @return int
     * @throws Exception
     */
    public int addMembers(Members input) throws Exception;

    /**
     * 회원 데이터 수정하기
     * @param input 수정할 정보를 담고 있는 Beans
     * @return int
     * @throws Exception
     */
    public int editMembers(Members input) throws Exception;

    /**
     * 회원 데이터 삭제하기
     * @param input 삭제할 회원의 일련번호를 담고 있는 Beans
     * @return int
     * @throws Exception
     */
    public int deleteMembers(Members input) throws Exception;

}

Service Impl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
package study.spring.springmyshop.service.impl;

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import study.spring.springmyshop.model.Members;
import study.spring.springmyshop.service.MembersService;

/** 회원 데이터 관리 기능을 제공하기 위한 Service 계층에 대한 구현체 */
@Slf4j
@Service
public class MembersServiceImpl implements MembersService {

    /** MyBatis */
    // --> import org.apache.ibatis.session.SqlSession
    @Autowired
    SqlSession sqlSession;

    /**
     * 회원 데이터 상세 조회
     * @param input 조회할 데이터의 일련번호(PK)를 담고 있는 Beans
     * @return 조회된 데이터가 저장된 Beans
     * @throws Exception
     */
    @Override
    public Members getMembersItem(Members input) throws Exception {
        Members result = null;

        try {
            result = sqlSession.selectOne("MembersMapper.selectItem", input);

            if (result == null) {
                throw new NullPointerException("result=null");
            }
        } catch (NullPointerException e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("조회된 데이터가 없습니다.");
        } catch (Exception e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("데이터 조회에 실패했습니다.");
        }

        return result;
    }

    /**
     * 회원 데이터 목록 조회
     * @param input 검색조건을 담고 있는 Beans
     * @return 조회 결과에 대한 컬렉션
     * @throws Exception
     */
    @Override
    public List<Members> getMembersList(Members input) throws Exception {
        List<Members> result = null;

        try {
            result = sqlSession.selectList("MembersMapper.selectList", input);
            if (result == null) {
                throw new NullPointerException("result=null");
            }
        } catch (NullPointerException e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("조회된 데이터가 없습니다.");
        } catch (Exception e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("데이터 조회에 실패했습니다.");
        }

        return result;
    }

    /**
     * 회원 데이터가 저장되어 있는 갯수 조회
     * @param input 검색조건을 담고 있는 Beans
     * @return int
     * @throws Exception
     */
    @Override
    public int getMembersCount(Members input) throws Exception {
        int result = 0;

        try {
            result = sqlSession.selectOne("MembersMapper.selectCountAll", input);
        } catch (Exception e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("데이터 조회에 실패했습니다.");
        }

        return result;
    }

    /**
     * 회원 데이터 등록하기
     * @param input 저장할 정보를 담고 있는 Beans
     * @return int
     * @throws Exception
     */
    @Override
    public int addMembers(Members input) throws Exception {
        int result = 0;

        try {
            result = sqlSession.insert("MembersMapper.insertItem", input);

            if (result == 0) {
                throw new NullPointerException("result=0");
            }
        } catch (NullPointerException e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("저장된 데이터가 없습니다.");
        } catch (Exception e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("데이터 저장에 실패했습니다.");
        }

        return result;
    }

    /**
     * 회원 데이터 수정하기
     * @param input 수정할 정보를 담고 있는 Beans
     * @return int
     * @throws Exception
     */
    @Override
    public int editMembers(Members input) throws Exception {
        int result = 0;

        try {
            result = sqlSession.update("MembersMapper.updateItem", input);
            if (result == 0) {
                throw new NullPointerException("result=0");
            }
        } catch (NullPointerException e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("수정된 데이터가 없습니다.");
        } catch (Exception e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("데이터 수정에 실패했습니다.");
        }

        return result;
    }

    /**
     * 회원 데이터 삭제하기
     * @param input 삭제할 데이터의 일련번호(PK)를 담고 있는 Beans
     * @return int
     * @throws Exception
     */
    @Override
    public int deleteMembers(Members input) throws Exception {
        int result = 0;

        try {
            result = sqlSession.delete("MembersMapper.deleteItem", input);
            if (result == 0) {
                throw new NullPointerException("result=0");
            }
        } catch (NullPointerException e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("삭제된 데이터가 없습니다.");
        } catch (Exception e) {
            log.error(e.getLocalizedMessage());
            throw new Exception("데이터 삭제에 실패했습니다.");
        }

        return result;
    }

}

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[수업관련] MySQL 정보를 토대로 POJO,Mapper,Service 소스를 자동 생성하는 프로그램≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

comments powered by Disqus