1. JDBCTemplate模板的update
update一般用于insert等有参数同时传入的且无需返回结果的SQL语句。
三个方法:
public int update(String sql,Object[] args) public int update(String sql,Object[] args,int[] argTypes) public int update(String sql,PreparedStatementSetter pss)
还有一个方法不过太诡异了,不用之……这里比较搞笑的是第1和第2个,第一个方法中:这里Object []args,居然是由Spring猜测各个类型(反射),而不是顺序按照参数填入……囧。。。
第三个需要匿名类,写一下:
String sql = "insert into t_forum(forum_name,forum_desc) values(?,?)"; getJdbcTemplate().update(sql, new PreparedStatementSetter(){ public void setValues(PreparedStatement ps) throws SQLException { // TODO Auto-generated method stub ps.setString(1, forum.getForumName()); ps.setString(2, forum.getForumDesc()); } });
2. 更新并获得“新的主键ID”(前提是id是整数)
public void addFourm(final Forum forum) { final String sql = "insert into t_forum(forum_name,forum_desc) values(?,?)"; KeyHolder holder = new GeneratedKeyHolder(); getJdbcTemplate().update(new PreparedStatementCreator(){ @Override public PreparedStatement createPreparedStatement(Connection conn) throws SQLException { PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, forum.getForumName()); ps.setString(2, forum.getForumDesc()); return ps; } },holder); forum.setForumId(holder.getKey().intValue()); }
3. JdbcTemplate批量执行SQL语句
两种方法:
public int[] batchUpdate(String[] sql) public int[] batchUpdate(String sql,BatchPreparedStatementSetter pss)
很显然了,第一个是给一个多个SQL语句的数组,第二个则是根据基础的SQL语句,辅助以BathPreparedStatement,这样在每个pss中,只需要构造逐次的一条SQL语句即可(批量生成SQL语句)。
主要写下面方法的实现:
public void addForums(final LinkedList<Forum> forums) { String sql = "insert into t_forum(forum_name,forum_desc) values(?,?)"; this.getJdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() { @Override public int getBatchSize() { return forums.size(); } @Override public void setValues(PreparedStatement ps, int i) throws SQLException { // TODO Auto-generated method stub Forum f = forums.get(i); ps.setString(1,f.getForumName()); ps.setString(2, f.getForumDesc()); } }); }
4. 查询数据:RowCallbackHandler
当需要查询数据的时候,可以使用众多回调器,RowCallbackHandler。
public void query(String sql, RowCallbackHandler rch) public void query(String sql,Object[] args,RowCallbackHandler rch)
public Forum getForum(final int forumID) { String sql = "select * from t_forum where forum_id=?"; final Forum f = new Forum(); this.getJdbcTemplate().query(sql, new PreparedStatementSetter() { @Override public void setValues(PreparedStatement ps) throws SQLException { // TODO Auto-generated method stub ps.setInt(1, forumID); } }, new RowCallbackHandler() { @Override public void processRow(ResultSet rs) throws SQLException { // TODO Auto-generated method stub f.setForumId(rs.getInt("forum_id")); f.setForumName(rs.getString("forum_name")); f.setForumDesc(rs.getString("forum_desc")); } }); return f; }
5. 查询数据:使用RowMapper
RowMapper的好处是,自动封装了List,并自动返回,无需自己添加List和把元素添加到List中。
public List query(String sql,Object[] args,int[] argTypes,RowMapper rowMapper) public List<Forum> getForums(final int forumID) { String sql = "select * from t_forum where forum_id>?"; return (List<Forum>)this.getJdbcTemplate().query( sql, new Object[]{forumID}, new int[]{java.sql.Types.INTEGER}, new RowMapper() { @Override public Object mapRow(ResultSet rs, int i) throws SQLException { Forum f = new Forum(); f.setForumName(rs.getString("forum_name")); f.setForumId(rs.getInt("forum_id")); f.setForumDesc(rs.getString("forum_desc")); return f; } } ); }
6. RowCallbackHandler的子类: RowCountCallbackHandler计算行数
public int getForumCounts() { String sql = "select * from t_forum"; RowCountCallbackHandler countCallback = new RowCountCallbackHandler(); // not reusable getJdbcTemplate().query(sql, countCallback); int rowCount = countCallback.getRowCount(); return rowCount; }
当然,可以覆盖本类的下述方法,来实现对每条结果的处理,继承自RowCallbackHandler
7.查询单值数据
public int getForumCounts() { String sql = "select count(*) from t_forum"; return this.getJdbcTemplate().queryForObject(sql, Integer.class); }
这里之前存在的那些queryForInt等等现在统统被queryForObject取代,后面的第二个参数填写返回值类型。
相关推荐
使用JDBC Template,我们可以更好地组织业务逻辑代码,使其与数据访问层分离,符合面向对象设计原则,有利于系统的扩展和维护。 综上所述,Java JDBC Template在学生信息管理系统中扮演了重要角色,它降低了数据库...
首先,JDBC_Template是Spring对JDBC API的一层抽象,它将常见的JDBC模板化操作进行了封装,如打开和关闭连接、处理结果集等,开发者无需关注这些底层细节,可以更专注于业务逻辑。在Spring的`spring-jdbc-5.0.0....
Spring MVC和JDBC Template是Java开发中...这有助于提升你在Java Web开发中的技能,使你能更有效地处理数据交互和业务流程。在实践中,还可以结合MyBatis或Hibernate等ORM框架,进一步优化数据库操作,提高开发效率。
首先,JDBC Template通过预编译SQL语句、自动处理结果集以及事务管理,大大减少了手动编写JDBC代码的工作量。它将数据库操作封装成模板方法,使得开发者可以专注于业务逻辑,而无需关注底层的连接管理和异常处理。在...
本实例将深入解析如何使用Spring JDBC Template进行数据库操作,并包含详细的测试用例。 首先,我们需要在项目中引入Spring JDBC的相关依赖。在Maven工程中,可以在pom.xml文件中添加如下依赖: ```xml ...
本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并进行批量插入数据的操作。 首先,我们需要在项目中引入Spring框架的相关依赖,通常包括`spring-context`和`spring-jdbc`。这些可以在Maven或Gradle...
4. **事务支持**:Spring JDBC Template提供了一套易于使用的事务管理API,可以方便地在业务代码中进行事务的开始、提交、回滚操作,提高了代码的事务处理能力。 5. **异常处理**:JDBC Template将数据库抛出的异常...
在Spring MVC中,控制器接收HTTP请求,调用业务逻辑(由Spring管理的bean),处理数据,并将结果传递给视图进行渲染。 JDBC(Java Database Connectivity)是Java访问数据库的标准接口。虽然直接使用JDBC可以完成...
在这个场景中,MySQL作为数据存储的后端,与Spring JDBC Template协作,接收并处理应用程序发出的SQL查询,存储和检索数据。 最后,Sharding-J-Subdb(可能指的是ShardingSphere的子项目)是一个用于数据库分片的...
**JDBC Template** JDBC(Java Database Connectivity)模板是Spring框架的一个重要组成部分,它提供了一种简化数据库操作的抽象层,...在实际开发中,正确使用JDBC Template可以显著提高开发效率,同时保证代码质量。
JdbcTemplate是Spring提供的一个简单但强大的JDBC抽象层,它避免了手动管理数据库连接、关闭资源等繁琐工作。通过`JdbcTemplate`,我们可以方便地执行SQL语句,处理结果集,同时它还提供了事务管理的支持。虽然...
- **MySQL**:广泛使用的开源关系型数据库,适合处理大量数据并支持高并发,适用于Web应用程序。 - **Oracle**:强大的企业级数据库系统,提供了高级特性如分布式数据库、ACID事务等,适用于大型企业应用。 Python...
它提供了模板化的SQL执行方法,从而避免了繁琐的JDBC代码编写,提高了代码的可读性和可维护性。项目经理编写的这个`JDBCTemplate`框架,可能是基于Spring的`JdbcTemplate`进行了二次开发或者封装,以适应项目的特定...
在项目结构中,`jdbc4mongodb`可能是指该项目同时包含了对关系型数据库(如JDBC)和MongoDB的支持,这表明项目可能涉及多数据源的处理。 总结来说,Spring Data MongoDB通过`MongoDBTemplate`简化了MongoDB的集成和...
MySQL JDBC、Druid数据库连接池和Template技术是Java Web开发中的关键组件,它们极大地提高了数据库操作的效率和便捷性。让我们深入探讨这些知识点。 首先,MySQL JDBC(Java Database Connectivity)是Java与MySQL...
2. Spring的JDBC DAO实现:在Spring中,我们可以创建一个接口定义数据库操作,然后使用Spring的ProxyFactoryBean或AOP来实现接口,实现事务管理和异常处理。 三、Spring JDBC核心组件 1. DataSource:数据源是连接...
5. **数据库操作**:使用普通的JDBC API或者ORM框架(如MyBatis)进行数据库操作,Sharding-JDBC会在底层自动处理分片逻辑。 ### 4. 分片策略 - **标准分片策略**:基于等值分片,适用于按固定字段分片的场景。 - *...
MySQL负责数据存储,JDBC和Servlet处理数据交互,Freemarker和ArtTemplate构建用户界面,jQuery增强用户体验,而JSON和百度地图API则提供了数据传输和地图服务。这个系统展示了Web开发中的典型技术栈,为类似应用...
Spring JDBC Template是Spring框架的一个重要组件,它提供了一种简化JDBC(Java Database Connectivity)操作的方法,使得开发者可以更方便地进行数据库交互,无需过多关注底层的数据库连接管理、事务处理等细节。...
《Spring JDBC:Spring框架对JDBC...同时,Spring JDBC还结合了Spring的其他模块,如数据源管理和事务处理,提供了完整的数据库访问解决方案。通过合理利用这些工具,开发者可以构建出稳定、高效且易于维护的Java应用。