jdbcTemplate常用的调用方式整理

@Repository
public class TestDao {

	@Autowired
	JdbcTemplate jdbcTemplate;

	/*
	 * RowMapper
	 */
	public List<String> menuList(Long serverId) {

		String sql = "select code from crmii.MENUFAVOUR where scr=? and qxrq is null";
		List<String> aList = Lists.newArrayList();
		try {
			aList = jdbcTemplate.query(sql, new Object[] { serverId }, new RowMapper<String>() {
				@Override
				public String mapRow(ResultSet resultSet, int i) throws SQLException {
					String aString = resultSet.getString("code");
					return aString;
				}
			});
		} catch (DataAccessException e) {
		}

		return aList;
	}

	/*
	 * RowCallbackHandler
	 */
	public void testResultSet2() {
		String listSql = "select * from crmii.menufavour";
		final List<String> result = Lists.newArrayList();
		jdbcTemplate.query(listSql, new RowCallbackHandler() {
			@Override
			public void processRow(ResultSet rs) throws SQLException {
				String code = rs.getString("code");
				result.add(code);
			}
		});
	}

	/*
	 * ResultSetExtractor
	 */

	public void testResultSet3() {

		String listSql = "select * from crmii.menufavore";
		List result = jdbcTemplate.query(listSql, new ResultSetExtractor<List>() {
			@Override
			public List<String> extractData(ResultSet rs) throws SQLException, DataAccessException {
				List<String> result = Lists.newArrayList();
				while (rs.next()) {
					result.add(rs.getString("code"));
				}
				return result;
			}
		});
	}

	/*
	 * PreparedStatementCreator
	 */
	int getCount() {
		int count = jdbcTemplate.execute(new PreparedStatementCreator() {
			@Override
			public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
				return conn.prepareStatement("select count(*) from crmii.menufavour");
			}
		}, new PreparedStatementCallback<Integer>() {
			@Override
			public Integer doInPreparedStatement(PreparedStatement pstmt) throws SQLException, DataAccessException {
				pstmt.execute();
				ResultSet rs = pstmt.getResultSet();
				rs.next();
				return rs.getInt(1);
			}
		});
		return count;
	}

	/*
	 * PreparedStatementSetter
	 */
	void testSetter() {

		java.sql.Date d = new java.sql.Date(System.currentTimeMillis());
		String insertSql = "insert into crmii.menufavour(code,scr,scrq) values (?,?,?)";
		int count = jdbcTemplate.update(insertSql, new PreparedStatementSetter() {
			@Override
			public void setValues(PreparedStatement pstmt) throws SQLException {
				pstmt.setString(1, "name4");
				pstmt.setLong(2, 13255);
				pstmt.setDate(3, d);
			}
		});
	}
	void test() {
		// 1.查询一行数据并返回int型结果
		// int count=jdbcTemplate.queryfqueryForInt("select count(*) from
		// crmii.menufavour");
		// 2. 查询一行数据并将该行数据转换为Map返回
		Map s = jdbcTemplate.queryForMap("select * from crmii.menufavour where scr=13255");
		// 3.查询一行任何类型的数据,最后一个参数指定返回结果类型
		Integer t = jdbcTemplate.queryForObject("select count(*) from crmii.menufavour", Integer.class);
		// 4.查询一批数据,默认将每行数据转换为Map
		jdbcTemplate.queryForList("select * from crmii.menufavour");
		// 5.只查询一列数据列表,列类型是String类型,列名字是name
		jdbcTemplate.queryForList("select code from crmii.menufavour where scr=?", new Object[] { 13255 },
				String.class);
		// 6.查询一批数据,返回为SqlRowSet,类似于ResultSet,但不再绑定到连接上
		SqlRowSet rs = jdbcTemplate.queryForRowSet("select * from crmii.menufavour");
	}

通过jdbcTemplate批量更新
 public void insertBatch1(final List<Employee> employees){
        jdbcTemplate = new JdbcTemplate(dataSource);
          String sql = "INSERT INTO EMPLOYEE " +
            "(ID, NAME, AGE) VALUES (?, ?, ?)";
          
          jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
          
            public void setValues(PreparedStatement ps, int i) throws SQLException {
                Employee employee = employees.get(i);
                ps.setLong(1, employee.getId());
                ps.setString(2, employee.getName());
                ps.setInt(3, employee.getAge() );
            }
          
            public int getBatchSize() {
                return employees.size();
            }
          });
        }









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值