`
cjp1989
  • 浏览: 162148 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

jdbcTemplate的CRUD操作总结

阅读更多

       在使用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下的增加(create)操作

 

//不带参数的
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)操作

 

//表里有个字段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方法比较方便的操作数据库的增删改查,以上的信息可能有错误,欢迎大家指出。眨眼

 

2
1
分享到:
评论
4 楼 cjp1989 2013-01-24  
凤凰山 写道
为啥不用StringUtils ?

可以使用的,我正想尝试下. 
3 楼 凤凰山 2013-01-23  
为啥不用StringUtils ?
2 楼 cjp1989 2013-01-23  
打了个D 写道
4.1貌似错了。
好像应该返回一个List吧??难道记错啦?

采用RowMapper(){}返回当前对象,而list已经是包含了多个message的对象集合。
1 楼 打了个D 2013-01-23  
4.1貌似错了。
好像应该返回一个List吧??难道记错啦?

相关推荐

    rest风格+jdbctemplate的CRUD操作.rar

    完成功能:能够对用户进行CRUD操作,界面粗糙,只做演示 运行环境:eclipse2019.03+JDK8+Tomcat9.0.41+MySQL5.5 运用到的技术:spring+springMVC+jdbctemplate+MVC框架 具体细节: ①查询所有员工列表:jdbcTemplate...

    spring的jdbctemplate的crud的基类dao

    总结来说,`Spring`的`JdbcTemplate`和基于它的基类DAO设计是面向数据库操作的一种良好实践。它简化了与数据库的交互,提供了易于理解和使用的API,使得开发者能够更加专注于业务逻辑,而不是底层的数据库操作。通过...

    一个完整的Spring MVC的CRUD操作实例

    Spring的JdbcTemplate或MyBatis框架可以简化数据库操作。 5. **视图解析**: 视图解析器如InternalResourceViewResolver会根据Controller返回的逻辑视图名,结合前缀和后缀生成实际的JSP页面。例如,"success"可能...

    Spring-JDBC:Spring with JDBC 操作在MVC中使用JDBCTemplate CRUD应用

    下面我们将深入探讨如何在Spring MVC中使用JDBCTemplate进行CRUD(创建、读取、更新和删除)操作。 首先,我们需要在Spring配置文件中定义JdbcTemplate的bean。这通常通过DataSource(数据源)来实现,DataSource...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储过程,然后编写 Java 代码使用 Spring JdbcTemplate 调用...

    CRUD CRUD CRUD

    CRUD,全称为Create(创建)、Read(读取)、Update(更新)和Delete(删除),是数据库操作的基础,也是理解任何数据驱动应用的核心概念。在IT行业中,CRUD操作广泛应用于各种应用程序,从简单的数据库管理工具到...

    JdbcTemplate示例

    本示例将深入探讨`JdbcTemplate`的使用,包括其核心功能以及如何进行CRUD(创建、读取、更新和删除)操作。 `JdbcTemplate`是Spring为简化数据库访问而设计的一个抽象层,它消除了手动管理数据库连接、预编译SQL...

    java基于jdbctemplate数据持久层操作封装

    - 在MySQL环境中,JdbcTemplate可以轻松执行各种SQL操作,如CRUD(创建、读取、更新、删除),同时兼容MySQL特有的语法和特性。 5. **封装实践**: - 开发中,通常会基于JdbcTemplate创建一个DAO(Data Access ...

    SpringJdbcTemplate封装工具类

    在描述中提到的“规范model格式接口”,可能是指创建一套标准的数据访问接口,这些接口定义了CRUD(Create、Read、Update、Delete)操作,并由SpringJdbcTemplate实现具体的数据库交互逻辑。这样做的好处是解耦了...

    使用Spring JDBCTemplate进行增删改查curd操作

    总结来说,Spring JdbcTemplate通过提供一套简单易用的API,极大地简化了数据库操作,同时保证了代码的健壮性和安全性。无论是在简单的CRUD操作还是复杂的事务处理中,它都是Spring开发中不可或缺的工具。通过熟练...

    spring-jdbcTemplate实例工程

    4. **适用场景**:适用于简单到中等复杂的数据库操作,如CRUD(创建、读取、更新、删除)操作,但不适合高度复杂的SQL逻辑。 总的来说,Spring JdbcTemplate是Spring框架中处理数据库操作的重要工具,它通过简化...

    Spring进阶:Spring的CRUD

    总结,Spring的CRUD操作是通过IoC容器管理的数据访问组件完成的,借助于`JdbcTemplate`或ORM框架,结合AOP进行事务管理,实现了高效且易于维护的数据库操作。同时,注解驱动的配置简化了XML配置文件,使代码更加简洁...

    Spring--JdbcTemplate.pdf

    1. 执行增删改操作(CRUD): - 添加数据:调用JdbcTemplate对象的update方法,传入SQL语句和可变参数(值数组)。 - 删除和修改数据:同样通过update方法,传入相应的SQL语句和参数。 2. 执行查询操作: - ...

    简单介绍如何使用Spring Boot使用JdbcTemplate与MySQL进行数据库操作

    在本文中,我们将深入探讨如何使用Spring Boot集成JdbcTemplate与MySQL数据库进行数据操作。Spring Boot以其简化配置和快速启动的特点,已经成为Java开发者的首选框架。而JdbcTemplate是Spring框架的一部分,它提供...

    JavaEE JdbcTemplate的简单示例

    总结起来,JavaEE JdbcTemplate是Spring框架中用于数据库操作的重要工具,它通过简化API,提升了开发效率和代码质量。理解并熟练运用JdbcTemplate,能够帮助开发者更专注于业务逻辑,减少数据库层的错误和复杂性。在...

    spring mvc注解jdbctemplate

    JdbcTemplate提供了一系列的便捷方法,如`update()`, `queryForObject()`, `queryForList()`等,涵盖了常见的CRUD操作。这些方法都封装了SQL执行、结果转换等细节,使得代码更加简洁。 此外,JdbcTemplate还支持...

    flex和java进行CRUD操作(转贴)

    例如,可以使用Spring框架的JdbcTemplate或MyBatis来操作数据库。 2. 读取(Retrieve):Flex可以向Java服务器发起HTTP请求,请求特定的数据。Java服务器可以查询数据库,获取所需数据,并将其转换为AMF格式返回。...

    SpringMVC整合jdbcTemplate实例

    在本文中,我们将深入探讨如何将SpringMVC与jdbcTemplate集成,同时利用Druid作为连接池,实现一个基于REST风格的简单CRUD应用。我们将主要关注以下知识点: 1. **SpringMVC框架**:SpringMVC是Spring框架的一个...

    ssh-crud.rar_SSH CRUD_ssh

    4. CRUD操作的示例:展示了如何通过Spring的JdbcTemplate或HibernateTemplate来执行创建、查询、更新和删除数据库记录的代码示例。 5. 整合SSH:描述了如何将这三个框架集成在一起,实现一个完整的Web应用程序。 ...

    Spring JdbcTemplate

    在提供的文件列表中,`BaseDao.java`和`BaseDaoImpl.java`很可能是自定义的基类和实现类,用于封装JdbcTemplate的常用操作。BaseDao通常会定义一些基本的CRUD(创建、读取、更新、删除)方法,如`selectById(int id)...

Global site tag (gtag.js) - Google Analytics