Spring JDBC

From My Limbic Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Spring Jdbc Abstraction Layer. The Spring-JDBC component is a part of the Spring framework and is an abstraction on top of the standard Java JDBC API. It takes care of all the low-level API-calls and

<source lang="java"> //lets imagine a case with an object named "Candy" public class CandyDataService{

private static final String INSERT_QUERY = "INSERT INTO CANDY(param1,param2) VALUES(?,?)"; private static final String DELETE_QUERY = "DELETE FROM CANDY WHERE ID=?"; private static final String SELECT_ALL_QUERY = "SELECT * FROM CANDY";

//Local database declarated, just for this examble HsqlDatabase db = new HsqlDatabase();

//Database connection JdbcTemplate jdbcTemplate = new JdbcTemplate( new SingleConnectionDataSource(db.conn, false));

//Insert private void insertCandy(Candy candy) { jdbcTemplate.update(INSERT_QUERY, param1, param2, param...); }

//Multi-Inserts public void insertCandies(List<Candy> candies) { for (Candy candy : candies) { insertCandy(candy); } }

//Delete Method public void deleteCandy(int id) { jdbcTemplate.update(DELETE_QUERY, id); }

//Get all candies with Auto-Mapping public List<Candy> retrieveAllCandies() throws SQLException{ jdbcTemplate.query(SELECT_ALL_QUERY, new BeanPropertyRowMapper<Candy>(Candy.class)); }

//Get all candies with Custom-Mapping public List<Candy> retrieveAllCandies() throws SQLException{ jdbcTemplate.query(SELECT_ALL_QUERY, new RowMapper<Candy>(){ public Candy mapRow(ResultSet rs, int rowNum) throws SQLException{ //OR: Solution 1 //Take the results set and set into the Candy object return new Candy(rs.getInt(1), rs.getString(2), rs.getBoolean(3),...);

//OR: Solution 2 //Using encapsulation Candy candy = new Candy(); candy.setParam1(rs.getInt(1)); candy.setParam1(rs.getString(2)); candy.setParam3(rs.getBoolean(3)); return candy; } } //OR: Solution 3 new CandyMapper()); } }

/** * Create a Mapper to help organizing the code in Custom-Mapping method * So it becomes reusable * Can also be declared as "Public class" and move it to a different Package */ class CandyMapper implements RowMapper<Candy>{ public Candy mapRow(ResultSet rs, int rowNum) throws SQLException{

Candy candy = new Candy(); candy.setParam1(rs.getInt(1)); candy.setParam1(rs.getString(2)); candy.setParam3(rs.getBoolean(3)); return candy; } } </source>