前天写了一篇文章也是Spring保存数据返回id SqlUpdate类使用的
地址:hi.baidu.com/%CD%F5%D7%D36%BA%C5/blog/item/e9458e38f63001fab211c7f2.html
但是里面的参数比较少,只有3个。
当出现了10多个参数的时候,明显用链接里的方法是不行的。因为值对应会很麻烦。
改成以下方法后,虽然代码多了,但是更明了清晰,所以插入列值较多的话,推荐大家用此方法。
public int saveMenu(MenuForm menu) throws DataAccessException {
StringBuffer sb = new StringBuffer();
sb
.append("INSERT INTO websys_adminmenu(pid,name,url,title,target,icon,iconOpen,open,`index`,description,`show`,inTime)");
sb
.append("VALUES(:pid,:name,:url,:title,:target,:icon,:iconOpen,:open,:index,:description,:show,now())");
SqlUpdate sqlUpdate = new SqlUpdate(jdbcTemplate.getDataSource(), sb
.toString());
sqlUpdate.declareParameter(new SqlParameter("pid", Types.INTEGER));
sqlUpdate.declareParameter(new SqlParameter("name", Types.VARCHAR));
sqlUpdate.declareParameter(new SqlParameter("url", Types.VARCHAR));
sqlUpdate.declareParameter(new SqlParameter("title", Types.VARCHAR));
sqlUpdate.declareParameter(new SqlParameter("target", Types.VARCHAR));
sqlUpdate.declareParameter(new SqlParameter("icon", Types.VARCHAR));
sqlUpdate.declareParameter(new SqlParameter("iconOpen", Types.VARCHAR));
sqlUpdate.declareParameter(new SqlParameter("open", Types.BIT));
sqlUpdate.declareParameter(new SqlParameter("index", Types.BIT));
sqlUpdate.declareParameter(new SqlParameter("description",
Types.VARCHAR));
sqlUpdate.declareParameter(new SqlParameter("show", Types.BIT));
sqlUpdate.setReturnGeneratedKeys(true);
sqlUpdate.compile();
KeyHolder keyHolder = new GeneratedKeyHolder();
Map paramMap = new HashMap();
paramMap.put("pid", menu.getPid());
paramMap.put("name", menu.getName().replace("'", "\'"));
paramMap.put("url", menu.getUrl().replace("'", "\'"));
paramMap.put("title", menu.getTitle().replace("'", "\'"));
paramMap.put("target", menu.getTarget().replace("'", "\'"));
paramMap.put("icon", menu.getIcon().replace("'", "\'"));
paramMap.put("iconOpen", menu.getIconOpen().replace("'", "\'"));
paramMap.put("open", menu.isOpen());
paramMap.put("index", menu.isIndex());
paramMap.put("description", menu.getDescription().replace("'", "\'"));
paramMap.put("show", menu.isShow());
int i = sqlUpdate.updateByNamedParam(paramMap, keyHolder);
if (i == 0 || null == keyHolder.getKey())// 没有保存成功返回0
return 0;
else {
return keyHolder.getKey().intValue();
}
}
分享到:
相关推荐
总的来说,这个项目实例提供了学习和理解Spring MVC与Servlet整合,以及如何使用它们从数据库获取数据并以JSON格式返回给客户端的宝贵机会。通过分析和运行源码,开发者可以更深入地掌握这些技术,并将其应用到自己...
本篇将详细阐述如何使用Spring进行数据访问,涵盖多种数据访问方式,包括JDBC、ORM(对象关系映射)框架如Hibernate和MyBatis,以及Spring Data JPA等。 首先,Spring JDBC(Java Database Connectivity)模块提供...
以上两种方法都可以实现文档的更新,但需要注意的是,直接使用`update`方法更高效,因为它不会加载整个文档到内存,而是直接在数据库级别执行更新操作。 在实际开发中,根据具体需求选择合适的方法。如果需要频繁...
在本篇【从零开始学Spring Boot】系列中,我们将探讨如何使用Java Persistence API (JPA) 来保存数据。JPA是Java平台上的一个标准,它为对象关系映射(ORM)提供了一种规范,使得开发人员可以使用Java对象来操作数据库...
本项目是关于如何在Spring Boot环境中整合三个数据源,其中两个是MySQL数据库,另一个是SQL Server数据库。 首先,我们需要了解Spring Boot的自动配置特性。Spring Boot通过`@EnableAutoConfiguration`注解自动配置...
在Spring Boot应用中,多数据源配置是一项关键的技术,它允许我们连接并操作多个数据库,例如MySQL和SQL Server。在本场景中,我们将探讨如何在Spring Boot中设置和管理这样的多数据源配置。 首先,我们需要了解`...
在Spring配置文件中,可以通过`org.springframework.jndi.JndiObjectFactoryBean`类来定义一个数据源。例如: ```xml <bean id="sysDB" class="org.springframework.jndi.JndiObjectFactoryBean"> <value>hzsh_...
本教程将详细介绍如何在Spring Boot项目中集成Spring Data JPA,实现CRUD(创建、读取、更新、删除)操作,并通过Ajax进行前后端数据交互。 首先,我们需要在Spring Boot项目中引入Spring Data JPA依赖。在`pom.xml...
1. 使用JdbcTemplate:JdbcTemplate提供了一种安全的方式来执行SQL查询,通过预编译的SQL语句和PreparedStatementCreator工厂类,将用户输入作为参数,而非直接拼接。例如,创建一个UserRepository接口,其中定义了...
在Spring Boot应用中,我们经常需要处理来自多个数据源的数据,比如在开发微服务架构时,每个服务可能对应一个特定的数据源。`JdbcTemplate`是Spring框架提供的一个用于简化数据库操作的工具,它使得数据库访问更为...
为了实现多数据源处理,我们需要定义一个动态数据源类,继承 AbstractRoutingDataSource,并实现方法 determineCurrentLookupKey,该方法返回一个 Object,一般是返回字符串。然后,我们需要建立一个获得和设置上...
在`queryData`方法中,你可以通过数据库查询语句(如SQL)获取数据,然后将结果放入`Model`对象中,最后返回一个视图名称,Spring MVC会自动解析这个名称并加载对应的HTML模板显示结果。对于`deleteData`方法,执行...
2. **动态数据源**:Spring的AbstractRoutingDataSource类允许根据特定条件动态选择数据源。通过设置当前数据源键,可以在运行时决定使用哪个数据源。 3. **事务管理**:在多数据源环境中,事务管理需要特别注意。...
在这段配置中,`jdbcInputChannel`是消息通道,`dataSource`是数据源引用,`query`定义了查询新数据的SQL语句,`update`则是更新数据库状态的SQL语句,以防止重复处理相同的记录。`poller`元素设置了定时轮询的频率...
例如,大量数据的批量插入可能更适合使用JdbcTemplate的`batchUpdate()`方法,或者直接使用JDBC的PreparedStatement来提高效率。 9. **最佳实践** - 保持SQL语句简洁,避免在业务代码中混杂复杂的SQL。 - 避免...
### Spring MVC 处理 XSS 和 SQL 注入攻击的方法总结 #### 一、引言 在 Web 开发领域,特别是基于 Java 的应用开发中,Spring MVC 框架因其灵活高效的特点而被广泛采用。然而,随着互联网技术的发展,网络安全问题...
本文将深入探讨Spring JdbcTemplate的常用方法,并结合提供的`JsonBean.java`和`JdbcUtils.java`文件,来理解其在实际应用中的使用。 首先,JdbcTemplate的核心功能在于它提供了一系列的方法来执行SQL语句,包括...
3. 使用@Async注解可以标记方法为异步执行,Spring会自动使用配置的线程池来执行该方法,从而提高系统并行处理能力。 三、数据同步控制问题 1. 在并发环境下,共享数据的访问可能导致数据不一致,需要采取同步机制...
Spring 实战包括使用 Spring Boot 构建 Web 应用程序、使用 Spring Data 构建数据访问层、使用 Spring Security 构建安全应用程序等。 10. Spring 生命周期 Spring 生命周期是指 Spring 应用程序从启动到关闭的...
例如,可以创建一个`@SwitchDataSource`注解,并在方法上使用,根据注解的参数来决定使用哪个数据源。 **5. 测试与验证** 确保所有配置正确后,编写单元测试或集成测试以验证多数据源的配置是否正常工作。使用`@...