Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8a185ec

Browse files
committed
доделал с JdbcUserMealRepositoryImpl
1 parent 4110799 commit 8a185ec

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

src/main/java/ru/javawebinar/topjava/repository/jdbc/JdbcUserMealRepositoryImpl.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
import org.springframework.jdbc.core.BeanPropertyRowMapper;
55
import org.springframework.jdbc.core.JdbcTemplate;
66
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
7+
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
78
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
89
import org.springframework.stereotype.Repository;
910
import ru.javawebinar.topjava.model.User;
1011
import ru.javawebinar.topjava.model.UserMeal;
1112
import ru.javawebinar.topjava.repository.UserMealRepository;
1213

1314
import javax.sql.DataSource;
15+
import java.sql.Timestamp;
1416
import java.time.LocalDateTime;
1517
import java.util.List;
1618

@@ -26,6 +28,9 @@ public class JdbcUserMealRepositoryImpl implements UserMealRepository {
2628
@Autowired
2729
private JdbcTemplate jdbcTemplate;
2830

31+
@Autowired
32+
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
33+
2934
private SimpleJdbcInsert insertMeal;
3035

3136
public JdbcUserMealRepositoryImpl(DataSource dataSource) {
@@ -38,32 +43,45 @@ public UserMeal save(UserMeal userMeal, int userId) {
3843
MapSqlParameterSource map = new MapSqlParameterSource()
3944
.addValue("time",userMeal.getDateTime())
4045
.addValue("calories",userMeal.getCalories())
41-
.addValue("description",userMeal.getDescription());
46+
.addValue("description",userMeal.getDescription())
47+
.addValue("user_id",userId);
48+
if (userMeal.isNew()) {
49+
Number newKey = insertMeal.executeAndReturnKey(map);
50+
userMeal.setId(newKey.intValue());
51+
} else {
52+
namedParameterJdbcTemplate.update(
53+
"UPDATE meals SET time=: time, calories=: calories, description=: description " +
54+
"WHERE meal_id=:meal_id AND user_id=: user_id",map);
55+
}
4256
return userMeal;
4357
}
4458

4559
@Override
4660
public boolean delete(int id, int userId) {
47-
return jdbcTemplate.update("DELETE FROM meals WHERE meal_id=?",id) !=0;
61+
return jdbcTemplate.update("DELETE FROM meals WHERE meal_id=? AND user_id=?", id, userId) !=0;
4862
}
4963

5064
@Override
5165
public UserMeal get(int id, int userId) {
52-
return jdbcTemplate.queryForObject("SELECT * FROM meals WHERE meal_id=?",ROW_MAPPER, id);
66+
return jdbcTemplate.queryForObject("SELECT * FROM meals WHERE meal_id=? AND user_id=?",ROW_MAPPER, id, userId);
5367
}
5468

5569
@Override
5670
public List<UserMeal> getAll(int userId) {
57-
return null;
71+
return jdbcTemplate.query("SELECT * FROM meals ORDER BY user_id", ROW_MAPPER);
5872
}
5973

6074
@Override
6175
public void deleteAll(int userId) {
76+
jdbcTemplate.update("DELETE FROM meals WHERE user_id=?", userId);
6277

6378
}
6479

6580
@Override
6681
public List<UserMeal> getBetween(LocalDateTime startDate, LocalDateTime endDate, int userId) {
67-
return null;
82+
Timestamp startD = Timestamp.valueOf(startDate);
83+
Timestamp endD = Timestamp.valueOf(endDate);
84+
return jdbcTemplate.query(
85+
"SELECT * FROM meals WHERE user_id=? AND time BETWEEN ? AND ?",ROW_MAPPER, userId,startD, endD);
6886
}
6987
}

0 commit comments

Comments
 (0)