在Spring中JdbcTemplate中使用RowMapper
2017-06-27 19:41
274 查看
Spring中JdbcTemplate中使用RowMapper
Spring中的RowMapper可以将数据中的每一行数据封装成用户自定义的类。我们在数据库查询中,如果返回的类型是用户自定义的类型(其实我们在数据库查询中大部分返回的都是自定义的类)则需要包装,如果是Java自定义的类型,如:String则不需要.如果sping与hibernate 相结合了,基本上是用不到,大多数都是在spring单独使用时用到.
可以通过建立内部(外部)类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现.
1. package com.cxl.demo.dao;
2.
3. import java.sql.ResultSet;
4. import java.sql.SQLException;
5. import java.util.List;
6. import org.springframework.jdbc.core.JdbcTemplate;
7. import org.springframework.jdbc.core.RowMapper;
8. import com.cxl.demo.entity.User;
9. public class UserDaoImpl {
10. private JdbcTemplate jdbcTemplate;
11.
12. public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
13. this.jdbcTemplate = jdbcTemplate;
14. }
15.
16. public List<User> getUserByName(String username) {
17. String sql = "select * from t_user where username = ?";
18. Object[] params = new Object[] { username };
19. List<User> users = null;
20. /**
21. * 使用接口实现类
22. */
23. users = jdbcTemplate.query(sql, params, new UserRowMapper());
24. /**
25. * 使用匿名内部类
26. * 如果UserRowMapper类只使用一次,单独为其创建一个类多余,可以使用匿名类
27. * 省略了书写一个实现类
28. */
29. users = jdbcTemplate.query(sql, params,
30. new RowMapper<User>() {
31. @Override
32. public User mapRow(ResultSet rs, int rowNum) throws SQLException {
33. User user = new User();
34. user.setId(rs.getInt("id"));
35. user.setUsername(rs.getString("username"));
36. user.setPassword(rs.getString("password"));
37. return user;
38. }
39. });
40. return (users != null && users.size() > 0) ? users : null;
41. }
42.
43. public class UserRowMapper implements RowMapper<User> {
44.
45. @Override
46. public User mapRow(ResultSet rs, int rowNum) throws SQLException {
47. User user = new User();
48. user.setId(rs.getInt("id"));
49. user.setUsername(rs.getString("username"));
50. user.setPassword(rs.getString("password"));
51. return user;
52. }
53.
54. }
55. }
Spring中的RowMapper可以将数据中的每一行数据封装成用户自定义的类。我们在数据库查询中,如果返回的类型是用户自定义的类型(其实我们在数据库查询中大部分返回的都是自定义的类)则需要包装,如果是Java自定义的类型,如:String则不需要.如果sping与hibernate 相结合了,基本上是用不到,大多数都是在spring单独使用时用到.
可以通过建立内部(外部)类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现.
1. package com.cxl.demo.dao;
2.
3. import java.sql.ResultSet;
4. import java.sql.SQLException;
5. import java.util.List;
6. import org.springframework.jdbc.core.JdbcTemplate;
7. import org.springframework.jdbc.core.RowMapper;
8. import com.cxl.demo.entity.User;
9. public class UserDaoImpl {
10. private JdbcTemplate jdbcTemplate;
11.
12. public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
13. this.jdbcTemplate = jdbcTemplate;
14. }
15.
16. public List<User> getUserByName(String username) {
17. String sql = "select * from t_user where username = ?";
18. Object[] params = new Object[] { username };
19. List<User> users = null;
20. /**
21. * 使用接口实现类
22. */
23. users = jdbcTemplate.query(sql, params, new UserRowMapper());
24. /**
25. * 使用匿名内部类
26. * 如果UserRowMapper类只使用一次,单独为其创建一个类多余,可以使用匿名类
27. * 省略了书写一个实现类
28. */
29. users = jdbcTemplate.query(sql, params,
30. new RowMapper<User>() {
31. @Override
32. public User mapRow(ResultSet rs, int rowNum) throws SQLException {
33. User user = new User();
34. user.setId(rs.getInt("id"));
35. user.setUsername(rs.getString("username"));
36. user.setPassword(rs.getString("password"));
37. return user;
38. }
39. });
40. return (users != null && users.size() > 0) ? users : null;
41. }
42.
43. public class UserRowMapper implements RowMapper<User> {
44.
45. @Override
46. public User mapRow(ResultSet rs, int rowNum) throws SQLException {
47. User user = new User();
48. user.setId(rs.getInt("id"));
49. user.setUsername(rs.getString("username"));
50. user.setPassword(rs.getString("password"));
51. return user;
52. }
53.
54. }
55. }
相关文章推荐
- Spring中JdbcTemplate使用RowMapper(简单明了的代码)
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper
- 在Spring中JdbcTemplate中使用RowMapper