Experimenting with Spring-JDBC. I am using this as reference. I am trying to get a list of actors who have the same last name. Running this code gave me the desired results:
public List<String> getActorsWithSameLastName(String lastName, NamedParameterJdbcTemplate template) { String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME=:LASTNAME"; Map<String, String> paramMap = new HashMap<String, String>(); paramMap.put("LASTNAME", lastName); return template.queryForList(query, paramMap, String.class); }
I have a List<String>
of last names. How can I get a List of actors with the list that I have? Do I iterate over the list of last names and call the getActorsWithSameLastName()
everytime or does spring provide a way where it does the iteration and fetches the result for me? Please advice.
ResultSetExtractor interface is a callback interface used by JdbcTemplate's query methods. Implementations of this interface perform the actual work of extracting results from a ResultSet, but don't need to worry about exception handling. SQLExceptions will be caught and handled by the calling JdbcTemplate.
Spring - NamedParameterJdbcTemplate Example Functionally, there's no difference between Spring's JdbcTemplate and it's variant, NamedParameterJdbcTemplate except for : NamedParameterJdbcTemplate provides a better approach for assigning sql dynamic parameters instead of using multiple '?' in the statement.
Usage. Step 1 − Create a JdbcTemplate object using a configured datasource. Step 2 − Create a StudentMapper object implementing RowMapper interface. Step 3 − Use JdbcTemplate object methods to make database operations while using StudentMapper object.
Use IN Clause..
How to use SELECT IN clause in JDBCTemplates?
List<String> lastnames= new ArrayList<>(); Map namedParameters = Collections.singletonMap("lastnamevalues", lastnames); StringBuffer recordQueryString = new StringBuffer(); recordQueryString.append("select FIRSTNAME, LASTNAME from ACTORS where lastname in (:lastnamevalues)"); List nameInvolvements = this.namedparameterJdbcTemplate.query(recordQueryString.toString(), namedParameters, new MyMapper());
You can also use MapSqlParameterSource
String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME in (:LASTNAME)"; Set<String> ids = ....; MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("LASTNAME", ids); this.namedparameterJdbcTemplate.query(query, parameters);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With