spring JdbcTemplate 封装,返回各种类型数据及返回主键,Long,Map,List<Map>,List<String>,List<Student>,Studen等。
package com.mvc.dao;
import com.mysql.jdbc.Statement;
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.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;
import java.sql.PreparedStatement;
import java.util.List;
import java.util.Map;
/**
* BaseDao
*
* @author smallk
* @date 2018/7/29 21:36
*/
@Repository
public class BaseDao {
@Autowired
public JdbcTemplate jdbcTemplate;
/**
* 返回map
*/
public Map<String, Object> queryMapBySQL(String sql, Object... params) {
try {
return jdbcTemplate.queryForMap(sql, params);
} catch (EmptyResultDataAccessException e) {
return null;
}
}
/**
* 返回指定对象,例如 User Student ...
*/
public <T> T queryObjectBySQL(String sql, Class<T> clazz, Object... params) {
try {
return jdbcTemplate.queryForObject(sql, params, new BeanPropertyRowMapper<>(clazz));
} catch (EmptyResultDataAccessException e) {
return null;
}
}
/**
* 返回指定简单对象,例如 String Integer ...
*/
public <T> T querySimpleObjectBySQL(String sql, Class<T> clazz, Object... params) {
try {
return jdbcTemplate.queryForObject(sql, params, clazz);
} catch (EmptyResultDataAccessException e) {
return null;
}
}
/**
* 返回指定对象list,例如 List<User> List<Student> ...
*/
public <T> List<T> queryObjectListBySQL(String sql, Class<T> clazz, Object... params) {
return jdbcTemplate.query(sql, params, new BeanPropertyRowMapper<>(clazz));
}
/**
* 返回指定简单对象list,例如 List<String> List<Integer> ...
*/
public <T> List<T> querySimpleObjectListBySQL(String sql, Class<T> clazz, Object... params) {
return jdbcTemplate.queryForList(sql, clazz, params);
}
/**
* 返回list
*/
public List<Map<String, Object>> queryListBySQL(String sql, Object... params) {
return jdbcTemplate.queryForList(sql, params);
}
/**
* 更新sql
*/
public Integer updateSQL(String sql, Object... params) {
return jdbcTemplate.update(sql, params);
}
/**
* insert sql 并且返回 id
*/
public long insertSQL(String sql, Object... params) {
KeyHolder keyHolder = new GeneratedKeyHolder();
PreparedStatementCreator preparedStatementCreator = conn -> {
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
int index = 1;
for (Object obj : params) {
ps.setObject(index++, obj);
}
return ps;
};
jdbcTemplate.update(preparedStatementCreator, keyHolder);
return keyHolder.getKey().longValue();
}
}