jdbcTemplate的CRUD操作总结
2013-02-07 15:21
239 查看
在使用Spring框架的系统中,增删改查操作是经常频繁的使用,也就是像我这样的新手经常做的CRUD操作,我经常使用到的是HibernateTemplate和JdbcTemplate来操作。对于Oracle数据库来说,使用HibernateTemplate操作很方便。最近换了SqlServer2008数据库,而且要处理分页。老大说使用jdbc直接操作,哎!有了hibernate,很少使用jdbc都快忘记了...
1.使用jdbcTemplate分页查询,注意sqlServer2008使用的是top分页操作:
Java代码
public List getList(String keywords,String startTime,String endTime,Pagenation pagenation){
String sqlAll="select * from message where 1=1";
String sql="";
String sqlTop="select top "+pagenation.getPageSize()+"* from message where id not in"+
" (select top "+pagenation.getStartRow()+" id from message )";
if(startTime !=null && !"".equals(startTime)){
sql+=" and createtime>='"+startTime+"'";
}
if(endTime !=null && !"".equals(endTime)){
sql+=" and createtime<='"+endTime+"'";
}
if(keywords !=null && !"".equals(keywords.trim())){
sql+=" and keywords like '%"+keywords.trim()+"%'";
}
sql+=" order by createtime desc";
List listCount=this.jdbcTemplate.queryForList(sqlAll+sql);
//获取记录的总数
pagenation.setRowCount(listCount.size());
//RowMapper将从数据库查询出来的结果,并已经封装成message对象,再存入list容器
List list=this.jdbcTemplate.query(sqlTop+sql,
new RowMapper(){
public Object mapRow(ResultSet rs,int rowNum)
throws SQLException{
MessageSqlServer message=new MessageSqlServer();
message.setId(rs.getLong(1));
message.setCreator(rs.getString(2));
message.setTime(rs.getDate(3));
message.setTrsNum(rs.getLong(4));
message.setComNum(rs.getLong(5));
message.setContent(rs.getString(6));
return message;
}
});
return list;
}
}
2.jdbcTemplate下的增加(create)操作
Java代码
//不带参数的
jdbcTemplate.update("insert into message values('1, '"你好
"',***)");
//带参数的
jdbcTemplate.update("insert into message values(?,?,***)",
new Object[]{1,"你好",*** });
//带参数,使用prepareStatement
int id =101;
String keywords="你好";
String ***="***";
jdbcTemplate.update("insert into message value (?, ?, ?, ?)",
new PreparedStatementSetter() {
public void setValues(PreparedStatement ps)
throws SQLException {
ps.setInt(1, id);
ps.setString(2, keywords);
ps.set***(3,***);
}
});
3.jdbcTemplate下的修改(update)和删除(delete)操作
Java代码
//表里有个字段status,0和1表示;不带参数;
jdbcTemplate.update("update message set status=1 where id="+id+"");
jdbcTemplate.update("delete from message where id="+id+"");
//表里有个字段status,0和1表示;带参数;
jdbcTemplate.update("update message set status=? where id=?",
new Object[]{1,id });
jdbcTemplate.update("delete from message where id=?",new Object[]{ id });
//若要修改字段的类型,则使用
jdbcTemplate.update(sql, new Object[]{id },
new int[]{Types.VARCHAR,Types.BIGINT })
4.jdbcTemplate下的查询操作,介绍两种方法(重点)
4.1 使用RowMapper接口直接封装你要的对象为list
Java代码
public List getTaskList(){
String sql="select * from task where status=0 order by id desc";
List list =this.getJdbcTemplate().query(sql,
new RowMapper(){
public Object mapRow(ResultSet rs,
int rowNum) throws SQLException {
Task task=new Task();
task.setId(rs.getLong(1));
task.setCreator(rs.getLong(2));
task.setStatus(rs.getLong(3));
task.setStartTime(rs.getDate(4));
task.setEndTime(rs.getDate(5));
task.setKeyWords(rs.getString(6));
return task;
}
});
return list;
}
4.2使用迭代器模式list.iterator()方法封装对象
Java代码
public List getTaskList(){
String sql="select * from task where status=0 order by id desc";
List taskList=new ArrayList();
List rows=this.getJdbcTemplate().queryForList(sql);
Iterator it=rows.iterator();
while(it.hasNext()){
Map rs=(Map)it.next();
Task task=new Task();
task.setId((Long) rs.get("id"));
task.setCreator((Long) rs.get("creator"));
task.setStatus((Long) rs.get("status"));
task.setStartTime((Date) rs.get("startTime"));
task.setEndTime((Date) rs.get("endTime"));
taskList.add(task);
}
return taskList;
}
总结:jdbcTemplate方法比较方便的操作数据库的增删改查,以上的信息可能有错误,欢迎大家指出。
1.使用jdbcTemplate分页查询,注意sqlServer2008使用的是top分页操作:
Java代码
public List getList(String keywords,String startTime,String endTime,Pagenation pagenation){
String sqlAll="select * from message where 1=1";
String sql="";
String sqlTop="select top "+pagenation.getPageSize()+"* from message where id not in"+
" (select top "+pagenation.getStartRow()+" id from message )";
if(startTime !=null && !"".equals(startTime)){
sql+=" and createtime>='"+startTime+"'";
}
if(endTime !=null && !"".equals(endTime)){
sql+=" and createtime<='"+endTime+"'";
}
if(keywords !=null && !"".equals(keywords.trim())){
sql+=" and keywords like '%"+keywords.trim()+"%'";
}
sql+=" order by createtime desc";
List listCount=this.jdbcTemplate.queryForList(sqlAll+sql);
//获取记录的总数
pagenation.setRowCount(listCount.size());
//RowMapper将从数据库查询出来的结果,并已经封装成message对象,再存入list容器
List list=this.jdbcTemplate.query(sqlTop+sql,
new RowMapper(){
public Object mapRow(ResultSet rs,int rowNum)
throws SQLException{
MessageSqlServer message=new MessageSqlServer();
message.setId(rs.getLong(1));
message.setCreator(rs.getString(2));
message.setTime(rs.getDate(3));
message.setTrsNum(rs.getLong(4));
message.setComNum(rs.getLong(5));
message.setContent(rs.getString(6));
return message;
}
});
return list;
}
}
public List getList(String keywords,String startTime,String endTime,Pagenation pagenation){ String sqlAll="select * from message where 1=1"; String sql=""; String sqlTop="select top "+pagenation.getPageSize()+"* from message where id not in"+ " (select top "+pagenation.getStartRow()+" id from message )"; if(startTime !=null && !"".equals(startTime)){ sql+=" and createtime>='"+startTime+"'"; } if(endTime !=null && !"".equals(endTime)){ sql+=" and createtime<='"+endTime+"'"; } if(keywords !=null && !"".equals(keywords.trim())){ sql+=" and keywords like '%"+keywords.trim()+"%'"; } sql+=" order by createtime desc"; List listCount=this.jdbcTemplate.queryForList(sqlAll+sql); //获取记录的总数 pagenation.setRowCount(listCount.size()); //RowMapper将从数据库查询出来的结果,并已经封装成message对象,再存入list容器 List list=this.jdbcTemplate.query(sqlTop+sql, new RowMapper(){ public Object mapRow(ResultSet rs,int rowNum) throws SQLException{ MessageSqlServer message=new MessageSqlServer(); message.setId(rs.getLong(1)); message.setCreator(rs.getString(2)); message.setTime(rs.getDate(3)); message.setTrsNum(rs.getLong(4)); message.setComNum(rs.getLong(5)); message.setContent(rs.getString(6)); return message; } }); return list; } }
2.jdbcTemplate下的增加(create)操作
Java代码
//不带参数的
jdbcTemplate.update("insert into message values('1, '"你好
"',***)");
//带参数的
jdbcTemplate.update("insert into message values(?,?,***)",
new Object[]{1,"你好",*** });
//带参数,使用prepareStatement
int id =101;
String keywords="你好";
String ***="***";
jdbcTemplate.update("insert into message value (?, ?, ?, ?)",
new PreparedStatementSetter() {
public void setValues(PreparedStatement ps)
throws SQLException {
ps.setInt(1, id);
ps.setString(2, keywords);
ps.set***(3,***);
}
});
//不带参数的 jdbcTemplate.update("insert into message values('1, '"你好 "',***)"); //带参数的 jdbcTemplate.update("insert into message values(?,?,***)", new Object[]{1,"你好",*** }); //带参数,使用prepareStatement int id =101; String keywords="你好"; String ***="***"; jdbcTemplate.update("insert into message value (?, ?, ?, ?)", new PreparedStatementSetter() { public void setValues(PreparedStatement ps) throws SQLException { ps.setInt(1, id); ps.setString(2, keywords); ps.set***(3,***); } });
3.jdbcTemplate下的修改(update)和删除(delete)操作
Java代码
//表里有个字段status,0和1表示;不带参数;
jdbcTemplate.update("update message set status=1 where id="+id+"");
jdbcTemplate.update("delete from message where id="+id+"");
//表里有个字段status,0和1表示;带参数;
jdbcTemplate.update("update message set status=? where id=?",
new Object[]{1,id });
jdbcTemplate.update("delete from message where id=?",new Object[]{ id });
//若要修改字段的类型,则使用
jdbcTemplate.update(sql, new Object[]{id },
new int[]{Types.VARCHAR,Types.BIGINT })
//表里有个字段status,0和1表示;不带参数; jdbcTemplate.update("update message set status=1 where id="+id+""); jdbcTemplate.update("delete from message where id="+id+""); //表里有个字段status,0和1表示;带参数; jdbcTemplate.update("update message set status=? where id=?", new Object[]{1,id }); jdbcTemplate.update("delete from message where id=?",new Object[]{ id }); //若要修改字段的类型,则使用 jdbcTemplate.update(sql, new Object[]{id }, new int[]{Types.VARCHAR,Types.BIGINT })
4.jdbcTemplate下的查询操作,介绍两种方法(重点)
4.1 使用RowMapper接口直接封装你要的对象为list
Java代码
public List getTaskList(){
String sql="select * from task where status=0 order by id desc";
List list =this.getJdbcTemplate().query(sql,
new RowMapper(){
public Object mapRow(ResultSet rs,
int rowNum) throws SQLException {
Task task=new Task();
task.setId(rs.getLong(1));
task.setCreator(rs.getLong(2));
task.setStatus(rs.getLong(3));
task.setStartTime(rs.getDate(4));
task.setEndTime(rs.getDate(5));
task.setKeyWords(rs.getString(6));
return task;
}
});
return list;
}
public List getTaskList(){ String sql="select * from task where status=0 order by id desc"; List list =this.getJdbcTemplate().query(sql, new RowMapper(){ public Object mapRow(ResultSet rs, int rowNum) throws SQLException { Task task=new Task(); task.setId(rs.getLong(1)); task.setCreator(rs.getLong(2)); task.setStatus(rs.getLong(3)); task.setStartTime(rs.getDate(4)); task.setEndTime(rs.getDate(5)); task.setKeyWords(rs.getString(6)); return task; } }); return list; }
4.2使用迭代器模式list.iterator()方法封装对象
Java代码
public List getTaskList(){
String sql="select * from task where status=0 order by id desc";
List taskList=new ArrayList();
List rows=this.getJdbcTemplate().queryForList(sql);
Iterator it=rows.iterator();
while(it.hasNext()){
Map rs=(Map)it.next();
Task task=new Task();
task.setId((Long) rs.get("id"));
task.setCreator((Long) rs.get("creator"));
task.setStatus((Long) rs.get("status"));
task.setStartTime((Date) rs.get("startTime"));
task.setEndTime((Date) rs.get("endTime"));
taskList.add(task);
}
return taskList;
}
public List getTaskList(){ String sql="select * from task where status=0 order by id desc"; List taskList=new ArrayList(); List rows=this.getJdbcTemplate().queryForList(sql); Iterator it=rows.iterator(); while(it.hasNext()){ Map rs=(Map)it.next(); Task task=new Task(); task.setId((Long) rs.get("id")); task.setCreator((Long) rs.get("creator")); task.setStatus((Long) rs.get("status")); task.setStartTime((Date) rs.get("startTime")); task.setEndTime((Date) rs.get("endTime")); taskList.add(task); } return taskList; }
总结:jdbcTemplate方法比较方便的操作数据库的增删改查,以上的信息可能有错误,欢迎大家指出。
相关文章推荐
- MyBatis 学习总结(二)——MyBatis 实现 crud 操作
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- Struts学习总结(七)---使用Struts2实现用户信息的CRUD操作(一:查询操作)
- Spring框架针对dao层的jdbcTemplate操作crud之query查询数据操作 —— 查询表,返回结果为对象的list集合
- 用JDBC封装CRUD操作(个人总结)
- jdbcTemplate实现crud操作(查询介绍)
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- MyBatis学习总结——使用MyBatis对表执行CRUD操作
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- Struts学习总结(九)---使用Struts2实现用户信息的CRUD操作(四:删除操作)
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- Struts学习总结(九)---使用Struts2实现用户信息的CRUD操作(三:修改操作)
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- day3_spring03_jdbcTemplate实现crud操作(添加操作)
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- Struts学习总结(八)---使用Struts2实现用户信息的CRUD操作(二:添加操作)
- JdbcTemplate实现CRUD操作
- Spring框架针对dao层的jdbcTemplate操作crud之query查询数据操作 —— 查询表,返回结果为对象的list集合