java - 如何使用map来减少Spring MVC Web应用程序中的对象创建?

标签 java spring spring-mvc optimization dao

情况:我正在设计一个基于 Spring MVC 的 Web 应用程序,我有一个名为 customers 的表,它由 3 列 id属性属性值

id 不是主键

以下是我正在使用的Model类:

public class prop {

private String id;
private String property;
private String property_value;

/*setter and getters of these three variables ...*/
}

我的道是:

@Repository("Dao")
public class Dao implements{

@Autowired
private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
}

public List<Model> listProp(String id) {

    final String sql = "select * from customers where id = ? ";
    final List<Model> list = jdbcTemplate.query(sql, new Object[]{id}, new Mapper());
    return list;
 }
}

我的 Mapper 类是:

public class Mapper implements RowMapper<Model> { 

public Model mapRow(ResultSet rs, int rowNum) throws SQLException {
    Model m = new Model();
    m.setId(rs.getString(1));
    m.setProperty(rs.getString(2));
    m.setValue(rs.getString(3));
    return wl;
}
}

问题:现在我有一个场景,其中 id=1 有 4 个属性,因此它将有 4 个相应的行并创建 4 个模型对象,

如果 id=1 有 100 个属性,那么会创建 100 个 model 对象,这是低效的,我希望对于 id=1 的所有行都有一个 Model 对象必须创建,我尝试使用 map 但无法正确实现它,有人可以帮忙吗?

注意:在用户界面中,我显示数据库中存在的所有记录

最佳答案

您可以将类属性修改为

public class prop {
    private String property;
    private String property_value;
/*setter and getters of these three variables ...*/
}

相应地修改Mapper代码以使用HashMap。

public class Mapper {

Map<String ,List<Model>> map = new HashMap<String , List<Model>>();

    public Map<String , Model> mapRow(ResultSet rs, int rowNum) throws SQLException {
        Model m = new Model();
        m.setProperty(rs.getString(2));
        m.setValue(rs.getString(3));

        if(map.containsKey(rs.getString(1))) {
            List<Model> modelList = map.get(rs.getString(1));
            modelList.add(m);
        } else {
            List<Model> modelList = new ArrayList<Model>();
            modelList.add(m);
            map.put(rs.getString(1),modelList);
        }

        return map;

    }
}

关于java - 如何使用map来减少Spring MVC Web应用程序中的对象创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36349760/

相关文章:

java - Thymeleaf if + 每个订单

java - Spring MVC : RESTful web services + BlazeDS integration possible in the same web application?

java - 如何强制执行 Spring 配置类的加载顺序?

java - JPA OneToOne,外键在 Spring Boot 上获取 null

java - 创建 spring -hibernate 配置文件时出错

java - Controller 中的Spring WebMvcConfigurerAdapter,WebApplicationInitializer和DWR空bean

java - 如何从 Java 中的 Dataframe 编码中选择常量值

java - 避免使用泛型进行不安全的转换

java - 如何更改由 J2Objc 生成的文件

java - hibernate映射中可以映射多少个表?