-
-
sping中的RowMapper可以将数据中的每一行数据封装成用户定义的类.
我们在数据库查询中,如果返回的类型是用户自定义的类型(其实我们在数据库查询中大部分返回的都是自定义的类)则需要包装,如果是Java自定义的类型,如:String则不需要.
如果sping与hibernate 相结合了,基本上是用不到,大多数都是在spring单独使用时用到.
可以通过建立内部类实现RowMapper接口,RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法,而对自定义类的包装就在mapRow方法中实现.
-
- package com.cxl.demo.dao;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.List;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.RowMapper;
- import com.cxl.demo.entity.User;
- public class UserDaoImpl {
- private JdbcTemplate jdbcTemplate;
- public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
- this.jdbcTemplate = jdbcTemplate;
- }
- public List<User> getUserByName(String username) {
- String sql = "select * from t_user where username = ?";
- Object[] params = new Object[] { username };
- List<User> users = null;
- /**
- * 使用接口实现类
- */
- users = jdbcTemplate.query(sql, params, new UserRowMapper());
- /**
- * 使用匿名内部类
- * 如果UserRowMapper类只使用一次,单独为其创建一个类多余,可以使用匿名类
- * 省略了书写一个实现类
- */
- users = jdbcTemplate.query(sql, params,
- new RowMapper<User>() {
- @Override
- public User mapRow(ResultSet rs, int rowNum) throws SQLException {
- User user = new User();
- user.setId(rs.getInt("id"));
- user.setUsername(rs.getString("username"));
- user.setPassword(rs.getString("password"));
- return user;
- }
- });
- return (users != null && users.size() > 0) ? users : null;
- }
- public class UserRowMapper implements RowMapper<User> {
- @Override
- public User mapRow(ResultSet rs, int rowNum) throws SQLException {
- User user = new User();
- user.setId(rs.getInt("id"));
- user.setUsername(rs.getString("username"));
- user.setPassword(rs.getString("password"));
- return user;
- }
- }
- }
Spring中JdbcTemplate中使用RowMapper
最新推荐文章于 2021-09-29 17:24:13 发布