package vn.edu.rmit.sadi; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; /** * This class implements the methods in the interface via a special Spring class: JdbcTemplate * JdbcTemplate allows you to write SQL to access the db, without worrying about all the checked exceptions */ public class MessageDaoImpl implements MessageDao { final private Log log = LogFactory.getLog(Client.class); private JdbcTemplate jdbcTemplate; // this is idiomatic spring/best practice to configure jdbcTemplates public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } @Override public List<String> allMessages() { List<String> messages = jdbcTemplate.query("select message from messages", new RowMapper<String>() { @Override public String mapRow(ResultSet rs, int rowNum) throws SQLException { return rs.getString(1); } }); return messages; } @Override public void saveMessage(String m) { jdbcTemplate.update("insert into messages(message) values(?)", m); for(String msg : allMessages()) { log.info(msg); } } @Override public String mostRecentMessage() { return null; //To change body of implemented methods use File | Settings | File Templates. } }