|
2 | 2 |
|
3 | 3 | //3. 동적 SQL 적용 |
4 | 4 | import java.util.HashMap; |
| 5 | +import java.util.Hashtable; |
5 | 6 | import java.util.List; |
6 | 7 |
|
7 | 8 | import org.apache.ibatis.session.SqlSession; |
@@ -51,9 +52,37 @@ public Project selectOne(int no) throws Exception { |
51 | 52 | public int update(Project project) throws Exception { |
52 | 53 | SqlSession sqlSession = sqlSessionFactory.openSession(); |
53 | 54 | try { |
54 | | - int count = sqlSession.update("spms.dao.ProjectDao.update", project); |
55 | | - sqlSession.commit(); |
56 | | - return count; |
| 55 | + Project original = sqlSession.selectOne( |
| 56 | + "spms.dao.ProjectDao.selectOne", project.getNo()); |
| 57 | + |
| 58 | + Hashtable<String,Object> paramMap = new Hashtable<String,Object>(); |
| 59 | + if (!project.getTitle().equals(original.getTitle())) { |
| 60 | + paramMap.put("title", project.getTitle()); |
| 61 | + } |
| 62 | + if (!project.getContent().equals(original.getContent())) { |
| 63 | + paramMap.put("content", project.getContent()); |
| 64 | + } |
| 65 | + if (project.getStartDate().compareTo(original.getStartDate()) != 0) { |
| 66 | + paramMap.put("startDate", project.getStartDate()); |
| 67 | + } |
| 68 | + if (project.getEndDate().compareTo(original.getEndDate()) != 0) { |
| 69 | + paramMap.put("endDate", project.getEndDate()); |
| 70 | + } |
| 71 | + if (project.getState() != original.getState()) { |
| 72 | + paramMap.put("state", project.getState()); |
| 73 | + } |
| 74 | + if (!project.getTags().equals(original.getTags())) { |
| 75 | + paramMap.put("tags", project.getTags()); |
| 76 | + } |
| 77 | + |
| 78 | + if (paramMap.size() > 0) { |
| 79 | + paramMap.put("no", project.getNo()); |
| 80 | + int count = sqlSession.update("spms.dao.ProjectDao.update", paramMap); |
| 81 | + sqlSession.commit(); |
| 82 | + return count; |
| 83 | + } else { |
| 84 | + return 0; |
| 85 | + } |
57 | 86 | } finally { |
58 | 87 | sqlSession.close(); |
59 | 88 | } |
|
0 commit comments