package com.in28minutes.jdbc.data.service; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.SingleConnectionDataSource; import com.in28minutes.jdbc.hsql.HsqlDatabase; import com.in28minutes.jdbc.model.Todo; public class TodoDataServiceSpringJDBC2 { private static final String INSERT_TODO_QUERY = "INSERT INTO TODO(DESCRIPTION,IS_DONE) VALUES(?, ?)"; private static final String DELETE_TODO_QUERY = "DELETE FROM TODO WHERE ID=?"; HsqlDatabase db = new HsqlDatabase(); JdbcTemplate jdbcTemplate = new JdbcTemplate( new SingleConnectionDataSource(db.conn, false)); public static Logger logger = LogManager .getLogger(TodoDataServiceSpringJDBC2.class); public void insertTodos(List<Todo> todos) { for (Todo todo : todos) { insertTodo(todo); } } private void insertTodo(Todo todo) { jdbcTemplate.update(INSERT_TODO_QUERY, todo.getDescription(), todo.isDone()); } public void deleteTodo(int id) { jdbcTemplate.update(DELETE_TODO_QUERY, id); } public List<Todo> retrieveAllTodos() throws SQLException { jdbcTemplate.query("SELECT * FROM TODO", new BeanPropertyRowMapper<Todo>(Todo.class)); List<Todo> todos = new ArrayList<Todo>(); Statement st = db.conn.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM TODO"); while (rs.next()) { todos.add(new Todo(rs.getInt(1), rs.getString(2), rs.getBoolean(3))); } st.close(); return todos; } public static void main(String[] args) throws SQLException { TodoDataServiceSpringJDBC2 dataservice = new TodoDataServiceSpringJDBC2(); dataservice.insertTodos(Arrays.asList(new Todo(0, "New Todo fasdf1", false))); dataservice.deleteTodo(1); List<Todo> todos = dataservice.retrieveAllTodos(); logger.info(todos); dataservice.db.closeConnection(); } }