Spring JdbcTemplate 常用方法整理

import java.util.List;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.dao.EmptyResultDataAccessException;

import org.springframework.jdbc.core.BeanPropertyRowMapper;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Repository;

@Repository

public class JdbcUtils {

protected Logger logger = LoggerFactory.getLogger(getClass());

@Autowired

protected JdbcTemplate jdbcTemplate;

// 分页sql前缀(适用于oracle)

public static final String PAGE_PREFIX = "select * from(select rownum r, ttt.* from(";

// 根据分页参数 组合分页sql后缀

public String getPAGE_SUFFIX(int page, int rows) {

return ") ttt ) where r > " + (page - 1) * rows + " and r <= " + page * rows;

}

// 组合后的分页sql

public String getPageSql(int page, int rows, String sql) {

return PAGE_PREFIX + sql + getPAGE_SUFFIX(page, rows);

}

// 查询数据条数sql

public String getPageCountSql(String sql) {

return " select count(0) from (" + sql + ")";

}

// 查询数据条数(有where参数条件)

public int queryForCount(String sql, Object... args) {

return jdbcTemplate.queryForInt(getPageCountSql(sql), args);

}

// 查询数据条数(无where参数条件)

public int queryForCount(String sql) {

return jdbcTemplate.queryForInt(getPageCountSql(sql));

}

// 查询List集合(无where参数条件)

public <T> List<T> queryForList(String sql, Class<T> clazz) {

return jdbcTemplate.query(sql, new BeanPropertyRowMapper<T>(clazz));

}

// 查询List集合(有where参数条件)

public <T> List<T> queryForList(String sql, Class<T> clazz, Object... args) {

return jdbcTemplate.query(sql, args, new BeanPropertyRowMapper<T>(clazz));

}

// 查询List集合并封装,适用于easyui datagrid(无where参数条件)

public <T> JsonBean queryForList(String sql, Class<T> clazz, int page, int rows) {

JsonBean bean = new JsonBean();

int total = this.queryForCount(sql);

List<T> data_list = queryForList(getPageSql(page, rows, sql), clazz);

bean.setTotal(total);

bean.setRows(data_list);

return bean;

}

// 查询List集合并封装,适用于easyui datagrid(有where参数条件)

public <T> JsonBean queryForList(String sql, Class<T> clazz, int page, int rows, Object... args) {

JsonBean bean = new JsonBean();

int total = this.queryForCount(sql, args);

List<T> data_list = queryForList(getPageSql(page, rows, sql), clazz, args);

bean.setTotal(total);

bean.setRows(data_list);

return bean;

}

// 返回一个JavaBean(无where参数条件)

public <T> T queryForClass(String sql, Class<T> clazz) throws Exception {

List<T> t = queryForList(sql, clazz);

return t == null ? null : t.get(0);

}

// 返回一个JavaBean(有where参数条件)

public <T> T queryForClass(String sql, Class<T> clazz, Object... args) throws Exception {

List<T> t = queryForList(sql, clazz, args);

return t.isEmpty() ? null : t.get(0);

}

public int queryForInt(String sql, Object... args) {

return jdbcTemplate.queryForInt(sql, args);

}

public int queryForInt(String sql) {

return jdbcTemplate.queryForInt(sql);

}

public long queryForLong(String sql, Object... args) {

return jdbcTemplate.queryForLong(sql, args);

}

public int update(String sql, Object... args) {

return jdbcTemplate.update(sql, args);

}

public int delete(String sql) {

return jdbcTemplate.update(sql);

}

public <T> T queryForObject(String sql, Class<T> clazz, Object... args) {

try {

return jdbcTemplate.queryForObject(sql, clazz, args);

} catch (EmptyResultDataAccessException e) {

}

return null;

}

}

猜你喜欢

转载自humlzy.iteye.com/blog/2382685