JdbcTemplate 中有很多的查询方法,整理几个比较常用的方法。
1、queryFor*方法很好用,简单强大。
2、query查询方法中带有回调接口有三个:ResultSetExtractor、RowCallbackHandler、RowMapper 使用ResultSetExtractor时,一般是直接new ResultSetExtractor(),然后在extractData(ResultSet rs)方法中实现自己的内容,最后返回Object结果。 使用RowCallbackHandler时,也是new RowCallbackHandler(),然后在processRow(ResultSet rs)方法中实现自己代码,并且将内容保存在上下文变量中,因为此方法没有返回类型(void) 使用RowMapper时,new RowMapper(), 然后在mapRow(ResultSet rs, int rowNum)实现自己代码,并返回Object结果。
3、ResultSetExtractor一次处理多个结果,而RowCallbackHandler、RowMapper只处理单行结果,具体内容可参照下面的代码,代码都是经过测试的,绝对好使。
@SuppressWarnings("unchecked")
public static void main(String[] args) {
try {
BasicDataSource datasource = new BasicDataSource();
datasource.setDriverClassName("com.mysql.jdbc.Driver");
datasource.setUrl("jdbc:mysql://127.0.0.1:3306/xzx");
datasource.setUsername("root");
datasource.setPassword("root");
JdbcTemplate jt = new JdbcTemplate(datasource);
// query1(jt);
// query2(jt);
// query3(jt);
// query4(jt);
// query5(jt);
// query6(jt);
// query7(jt);
// query8(jt);
query9(jt);
} catch (Exception e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
private static void query9(JdbcTemplate jt) {
List list1=new ArrayList();
String sql = "select * from userinfo where id<?";
list1=jt.execute(sql,new PreparedStatementCallback() {
public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
ps.setInt(1, 20);
ResultSet rs=ps.executeQuery();
Userinfo userinfo = new Userinfo();
List list=new ArrayList();
while (rs.next()) {
userinfo.setId(rs.getInt("id"));
userinfo.setUsername(rs.getString("username"));
userinfo.setPassword(rs.getString("password"));
userinfo.setCrateDate(rs.getDate("createDate"));
list.add(userinfo);
}
return list;
}
});
System.out.println(list1.size());
}
/**
* queryForInt(String sql)
*
* queryFor**(String sql)
*
* @param jt
*/
private static void query8(JdbcTemplate jt) {
int i = jt.queryForInt("select count(*) from userinfo");
System.out.println(i);
}
/**
* query(String sql, PreparedStatementSetter pss, ResultSetExtractor<T> rse)
*
* query(String sql, PreparedStatementSetter pss, RowCallbackHandler rch)
*
* query(String sql, PreparedStatementSetter pss, RowMapper<T> rowMapper)
*
* @param jt
*/
@SuppressWarnings("unchecked")
private static void query7(JdbcTemplate jt) {
List list1 = new ArrayList();
String sql = "select * from userinfo where id<? and username=?";
list1 = jt.query(sql, new PreparedStatementSetter() {
public void setValues(PreparedStatement ps) throws SQLException {
ps.setInt(1, 20);
ps.setString(2, "user4");
}
}, new ResultSetExtractor() {
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
List list = new ArrayList();
while (rs.next()) {
Userinfo u = new Userinfo();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
u.setCrateDate(rs.getDate("createDate"));
list.add(u);
}
return list;
}
});
System.out.println(list1.size());
}
/**
* query(String sql, Object[] args, ResultSetExtractor<T> rse) query(String
* sql, Object[] args, int[] argTypes, ResultSetExtractor<T> rse)
*
* query(String sql, Object[] args, RowMapper<T> rowMapper) query(String
* sql, Object[] args, int[] argTypes, RowMapper<T> rowMapper)
*
* query(String sql, Object[] args, RowCallbackHandler rch) query(String
* sql, Object[] args, int[] argTypes, RowCallbackHandler rch)
*
* argTypes:java.sql.Type中有定义
*
* @param jt
*/
@SuppressWarnings("unchecked")
private static void query6(JdbcTemplate jt) {
List list1 = new ArrayList();
String sql = "select * from userinfo where id<? and username=?";
list1 = jt.query(sql, new Object[] { 15, "user4" }, new ResultSetExtractor() {
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
List list = new ArrayList();
while (rs.next()) {
Userinfo u = new Userinfo();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
u.setCrateDate(rs.getDate("createDate"));
list.add(u);
}
return list;
}
});
System.out.println(list1.size());
}
/**
* query(final String sql, final ResultSetExtractor<T> rse) query(String
* sql, RowCallbackHandler rch) query(String sql, RowMapper<T> rowMapper)
*
* @param jt
*/
@SuppressWarnings("unchecked")
private static void query5(JdbcTemplate jt) {
List list1 = new ArrayList();
String sql = "select * from userinfo where id<20";
list1 = jt.query(sql, new ResultSetExtractor() {
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
List list = new ArrayList();
while (rs.next()) {
Userinfo u = new Userinfo();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
u.setCrateDate(rs.getDate("createDate"));
list.add(u);
}
return list;
}
});
System.out.println(((Userinfo) list1.get(4)).getUsername());
}
/**
* query(PreparedStatementCreator psc, RowMapper<T> rowMapper) 多次调用RowMapper
*
* @param jt
*/
static int i = 0;
static int j = 0;
static int k = 0;
@SuppressWarnings("unchecked")
public static void query4(JdbcTemplate jt) {
List list1 = new ArrayList();
list1 = jt.query(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
System.out.println("i=" + (++i));
String sql = "select * from userinfo where id<?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, 20);
return ps;
}
}, new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
System.out.println("j=" + (++j));
Userinfo u = new Userinfo();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
u.setCrateDate(rs.getDate("createDate"));
return u;
}
});
System.out.println(list1.size());
}
/**
* query(PreparedStatementCreator psc, RowCallbackHandler rch)
*
* @param jt
*/
@SuppressWarnings("unchecked")
public static void query3(JdbcTemplate jt) {
final List list = new ArrayList();
jt.query(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
System.out.println("i=" + (++i));
String sql = "select * from userinfo where id<?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, 20);
return ps;
}
}, new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
System.out.println("j=" + (++j));
while (rs.next()) {
Userinfo u = new Userinfo();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
u.setCrateDate(rs.getDate("createDate"));
list.add(u);
}
}
});
System.out.println(list.size());
}
/**
* query(PreparedStatementCreator psc, ResultSetExtractor<T> rse)
*
* @param jt
*/
@SuppressWarnings("unchecked")
public static void query2(JdbcTemplate jt) {
Userinfo u = new Userinfo();
u = jt.query(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
System.out.println("i=" + (++i));
String sql = "select * from userinfo where id=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, 20000);
return ps;
}
}, new ResultSetExtractor() {
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
System.out.println("j=" + (++j));
Userinfo userinfo = new Userinfo();
while (rs.next()) {
userinfo.setId(rs.getInt("id"));
userinfo.setUsername(rs.getString("username"));
userinfo.setPassword(rs.getString("password"));
userinfo.setCrateDate(rs.getDate("createDate"));
}
return userinfo;
}
});
System.out.println(u.getCrateDate());
}
/**
* query( PreparedStatementCreator psc, final PreparedStatementSetter pss,
* final ResultSetExtractor<T> rse)
*
* @param jt
*/
@SuppressWarnings("unchecked")
public static void query1(JdbcTemplate jt) {
Userinfo u = new Userinfo();
u = jt.query(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
System.out.println("i=" + (++i));
String sql = "select * from userinfo where id=?";
return con.prepareStatement(sql);
}
}, new PreparedStatementSetter() {
public void setValues(PreparedStatement ps) throws SQLException {
System.out.println("j=" + (++j));
ps.setInt(1, 20000);
}
}, new ResultSetExtractor() {
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
System.out.println("k=" + (++k));
Userinfo userinfo = new Userinfo();
while (rs.next()) {
userinfo.setId(rs.getInt("id"));
userinfo.setUsername(rs.getString("username"));
userinfo.setPassword(rs.getString("password"));
userinfo.setCrateDate(rs.getDate("createDate"));
}
return userinfo;
}
});
System.out.println(u.getCrateDate());
}