package com.in28minutes.jdbc.data.service; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Arrays; import java.util.List; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.datasource.SingleConnectionDataSource; import com.in28minutes.jdbc.hsql.HsqlDatabase; import com.in28minutes.jdbc.model.Todo; class TodoMapper implements RowMapper<Todo> { public Todo mapRow(ResultSet rs, int rowNum) throws SQLException { Todo todo = new Todo(); todo.setId(rs.getInt(1)); todo.setDescription(rs.getString(2)); todo.setDone(rs.getBoolean(3)); return todo; } } public class TodoDataServiceSpringJdbc { private static final String SELECT_ALL_TODOS = "SELECT * FROM TODO"; 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(TodoDataServiceSpringJdbc.class); public void insertTodos(List<Todo> todos) { for (Todo todo : todos) { insertTodo(todo); } } private void insertTodo(Todo bean) { jdbcTemplate.update(INSERT_TODO_QUERY, bean.getDescription(), bean.isDone()); } public void deleteTodo(int id) { jdbcTemplate.update(DELETE_TODO_QUERY, id); } public List<Todo> retrieveAllTodos() throws SQLException { return jdbcTemplate.query(SELECT_ALL_TODOS, new TodoMapper()); } /* * com.in28minutes.jdbc.data.service.TodoDataServiceSpringJdbc [Todo [id=0, * description=Spring Tutorial, isDone=false], Todo [id=2, * description=Struts Tutorials, isDone=false], Todo [id=3, description=Make * a List, isDone=false], Todo [id=23, description=New Todo Spring JDBC, * isDone=false], Todo [id=24, description=New Todo Spring JDBC, * isDone=false], Todo [id=25, description=New Todo Spring JDBC, * isDone=false], Todo [id=26, description=New Todo fasdf1, isDone=false], * Todo [id=27, description=New Todo Spring JDBC, isDone=false]] */ /* * class TodoMapper implements RowMapper<Todo> { public Todo * mapRow(ResultSet rs, int rowNum) { Todo todo = new Todo(); return todo; } * } */ public static void main(String[] args) throws SQLException { TodoDataServiceSpringJdbc dataservice = new TodoDataServiceSpringJdbc(); dataservice.insertTodos(Arrays.asList(new Todo(0, "New Todo Spring JDBC", false))); dataservice.deleteTodo(1); List<Todo> todos = dataservice.retrieveAllTodos(); logger.info(todos); dataservice.db.closeConnection(); } }