Spring SimpleJdbcTemplate


spring-context.xml:

<!-- bean id="simpleJdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate" -->
<bean id="simpleJdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
  <constructor-arg ref="dataSource" />
</bean>


import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.time.DateFormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;

import com.ahtec.oa.domain.OecReport;

public class TestQuery {

 /**
  * @param SimpleJdbcTemplate simpleJdbcTemplate
  * @param Sql sql
  * @param Logger logger
  * @param Map<String, Object> map
  * @param boolean "true:查看详细的分数;false:查看总分"
  */
 public void getScoreReportList(SimpleJdbcTemplate simpleJdbcTemplate, String sql, Logger logger,
   Map<String, Object> reportMap, final boolean isDetail) {
  ParameterizedRowMapper<OecReport> rm = new ParameterizedRowMapper<OecReport>() {
   public OecReport mapRow(ResultSet rs, int rowNum) throws SQLException {
    OecReport entity = new OecReport();
    if (isDetail) {
     entity.setOec_date(rs.getDate("oec_date"));
    }
    entity.setSend_user_name(rs.getString("send_user_name"));
    entity.setSend_dept_name(rs.getString("send_dept_name"));
    entity.setScore(rs.getBigDecimal("score"));
    return entity;
   }
  };
  if (isDetail) {
   logger.info("=======================[" + reportMap.get("begin_date") + "至" + reportMap.get("end_date") + "]详细的分数=======================");
  } else {
   logger.info("=======================[" + reportMap.get("begin_date") + "至" + reportMap.get("end_date") + "]总分=======================");
  }
  List<OecReport> oecReportList = simpleJdbcTemplate.query(sql, rm, reportMap);
  for (OecReport o : oecReportList) {
   String oec_date = "";
   if (isDetail) {
    oec_date = DateFormatUtils.format(o.getOec_date(), "yyyy-MM-dd");
   }
   String score = "--";
   if (null != o.getScore()) {
    score = o.getScore().toString();
   }
   if (isDetail) {
    logger.info("[{}] [{}] [{}] [{}]", new String[] { oec_date, o.getSend_user_name(),
      o.getSend_dept_name(), score });
   } else {
    logger.info("[{}] [{}] [{}]", new String[] { o.getSend_user_name(), o.getSend_dept_name(), score });
   }

  }
 }

 public static void main(String[] args) {
  Logger logger = LoggerFactory.getLogger(TestQuery.class);

  ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "spring-context.xml" });
  SimpleJdbcTemplate simpleJdbcTemplate = (SimpleJdbcTemplate) ctx.getBean("simpleJdbcTemplate");

  String sqlUserIds = "select u.id from user_info u where u.is_del = 0 and (u.dept_id in (select id  from dept_info start with par_id = :par_dept_id connect by prior id = par_id) or dept_id = :par_dept_id) and u.dept_id not in (:filter_dept_id)";

  String sqlDetailScoreReport = "select o.oec_date,o.send_user_name,o.send_dept_name,o.score "
    + "from oec_report o " 
    + " where o.is_del = 0 " 
    + " and o.is_send = 1"
    + " and o.oec_date >= to_date(:begin_date, 'yyyy-MM-dd')"
    + " and o.oec_date <= to_date(:end_date, 'yyyy-MM-dd')" 
    + " and o.send_user_id in(" + sqlUserIds + ")"
    + " order by  o.oec_date desc, o.send_dept_id";

  String sqlSumScoreReport = "select o.send_user_name,o.send_dept_name,sum(o.score) as score "
    + "from oec_report o " 
    + " where o.is_del = 0 " 
    + " and o.is_send = 1"
    + " and o.oec_date >= to_date(:begin_date, 'yyyy-MM-dd')"
    + " and o.oec_date <= to_date(:end_date, 'yyyy-MM-dd')" 
    + " and o.send_user_id in(" + sqlUserIds + ")"
    + " group by o.send_user_name, o.send_dept_id, o.send_dept_name" 
    + " order by o.send_dept_id";

  TestQuery t = new TestQuery();

  Map<String, Object> reportMap = new HashMap<String, Object>();
  reportMap.put("par_dept_id", 125);
  reportMap.put("filter_dept_id", 2992);
  reportMap.put("begin_date", "2009-08-25");
  reportMap.put("end_date", "2009-09-01");

  t.getScoreReportList(simpleJdbcTemplate, sqlDetailScoreReport, logger, reportMap, true);

  t.getScoreReportList(simpleJdbcTemplate, sqlSumScoreReport, logger, reportMap, false);
 }

}