jdbcTemplate的CRUD操作总结

      在使用Spring框架的系统中,增删改查操作是经常频繁的使用,也就是像我这样的新手经常做的CRUD操作,我经常使用到的是HibernateTemplate和JdbcTemplate来操作。对于Oracle数据库来说,使用HibernateTemplate操作很方便。最近换了SqlServer2008数据库,而且要处理分页。老大说使用jdbc直接操作,哎!有了hibernate,很少使用jdbc都快忘记了...

1.使用jdbcTemplate分页查询,注意sqlServer2008使用的是top分页操作:

Java代码 复制代码 收藏代码
  1. public List getList(String keywords,String startTime,String endTime,Pagenation pagenation){
  2. String sqlAll="select * from message where 1=1";
  3. String sql="";
  4. String sqlTop="select top "+pagenation.getPageSize()+"* from message where id not in"+
  5. " (select top "+pagenation.getStartRow()+" id from message )";
  6. if(startTime !=null && !"".equals(startTime)){
  7. sql+=" and createtime>='"+startTime+"'";
  8. }
  9. if(endTime !=null && !"".equals(endTime)){
  10. sql+=" and createtime<='"+endTime+"'";
  11. }
  12. if(keywords !=null && !"".equals(keywords.trim())){
  13. sql+=" and keywords like '%"+keywords.trim()+"%'";
  14. }
  15. sql+=" order by createtime desc";
  16. List listCount=this.jdbcTemplate.queryForList(sqlAll+sql);
  17. //获取记录的总数
  18. pagenation.setRowCount(listCount.size());
  19. //RowMapper将从数据库查询出来的结果,并已经封装成message对象,再存入list容器
  20. List list=this.jdbcTemplate.query(sqlTop+sql, new RowMapper(){
  21. public Object mapRow(ResultSet rs,int rowNum) throws SQLException{
  22. MessageSqlServer message=new MessageSqlServer();
  23. message.setId(rs.getLong(1));
  24. message.setCreator(rs.getString(2));
  25. message.setTime(rs.getDate(3));
  26. message.setTrsNum(rs.getLong(4));
  27. message.setComNum(rs.getLong(5));
  28. message.setContent(rs.getString(6));
  29. return message;
  30. }
  31. });
  32. return list;
  33. }
  34. }
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代码 复制代码 收藏代码
  1. //不带参数的
  2. jdbcTemplate.update("insert into message values('1, '"你好 "',***)");
  3. //带参数的
  4. jdbcTemplate.update("insert into message values(?,?,***)",
  5. new Object[]{1,"你好",*** });
  6. //带参数,使用prepareStatement
  7. int id =101;
  8. String keywords="你好";
  9. String ***="***";
  10. jdbcTemplate.update("insert into message value (?, ?, ?, ?)",
  11. new PreparedStatementSetter() {
  12. public void setValues(PreparedStatement ps) throws SQLException {
  13. ps.setInt(1, id);
  14. ps.setString(2, keywords);
  15. ps.set***(3,***);
  16. }
  17. });
//不带参数的
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代码 复制代码 收藏代码
  1. //表里有个字段status,0和1表示;不带参数;
  2. jdbcTemplate.update("update message set status=1 where id="+id+"");
  3. jdbcTemplate.update("delete from message where id="+id+"");
  4. //表里有个字段status,0和1表示;带参数;
  5. jdbcTemplate.update("update message set status=? where id=?",
  6. new Object[]{1,id });
  7. jdbcTemplate.update("delete from message where id=?",new Object[]{ id });
  8. //若要修改字段的类型,则使用
  9. 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代码 复制代码 收藏代码
  1. public List getTaskList(){
  2. String sql="select * from task where status=0 order by id desc";
  3. List list =this.getJdbcTemplate().query(sql, new RowMapper(){
  4. public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
  5. Task task=new Task();
  6. task.setId(rs.getLong(1));
  7. task.setCreator(rs.getLong(2));
  8. task.setStatus(rs.getLong(3));
  9. task.setStartTime(rs.getDate(4));
  10. task.setEndTime(rs.getDate(5));
  11. task.setKeyWords(rs.getString(6));
  12. return task;
  13. }
  14. });
  15. return list;
  16. }
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代码 复制代码 收藏代码
  1. public List getTaskList(){
  2. String sql="select * from task where status=0 order by id desc";
  3. List taskList=new ArrayList();
  4. List rows=this.getJdbcTemplate().queryForList(sql);
  5. Iterator it=rows.iterator();
  6. while(it.hasNext()){
  7. Map rs=(Map)it.next();
  8. Task task=new Task();
  9. task.setId((Long) rs.get("id"));
  10. task.setCreator((Long) rs.get("creator"));
  11. task.setStatus((Long) rs.get("status"));
  12. task.setStartTime((Date) rs.get("startTime"));
  13. task.setEndTime((Date) rs.get("endTime"));
  14. taskList.add(task);
  15. }
  16. return taskList;
  17. }
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方法比较方便的操作数据库的增删改查,以上的信息可能有错误,欢迎大家指出。眨眼

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值