Spring下jdbcTemplate增删改查总结

来源:互联网 发布:模糊算法的c语言实现 编辑:程序博客网 时间:2024/06/05 17:27
  在使用Spring框架的系统中,增删改查操作是经常频繁的使用,也就是像我这样的新手经常做的CRUD操作,我经常使用到的是HibernateTemplate和JdbcTemplate来操作。对于Oracle数据库来说,使用HibernateTemplate操作很方便。最近换了SqlServer2008数据库,而且要处理分页。老大说使用jdbc直接操作,哎!有了hibernate,很少使用jdbc都快忘记了... 
1.使用jdbcTemplate分页查询,注意sqlServer2008使用的是top分页操作: 


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下的增加记录操作 
//不带参数的jdbcTemplate.update("insert into message values('1, '"你好 "',***)");//带参数的jdbcTemplate.update("insert into message values(?,?,***)",     new Object[]{1,"你好",*** });//带参数,使用prepareStatementint 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下的修改和删除操作 
//表里有个字段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 

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()方法封装对象 

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
原创粉丝点击