Sprint Data JdbcTemplate中一些操作
1、新增数据后返回新增数据主键(JdbcTemplate)
package cn.coreqi.springaction.repository.Impl; import cn.coreqi.springaction.entity.User; import cn.coreqi.springaction.repository.TestRepository; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.core.PreparedStatementCreatorFactory; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; import javax.annotation.Resource; import java.sql.Types; import java.util.Arrays; public class JdbcTestRepositoryImpl implements TestRepository { @Resource private JdbcTemplate jdbcTemplate; /** * 新增用户并返回新增用户的主键 * @param user 新增用户 * @return 数据库中该新增用户主键 */ @Override public Long save(User user) { PreparedStatementCreator psc = new PreparedStatementCreatorFactory( "insert into t_user(userName,passWord,mobile) values (?,?,?)", Types.VARCHAR,Types.VARCHAR,Types.VARCHAR ).newPreparedStatementCreator( Arrays.asList( "fanqi", "coreqi", "13800138000" ) ); KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(psc,keyHolder); return keyHolder.getKey().longValue(); } }
2、新增数据后返回新增数据主键(SimpleJdbcInsert)
为了获取新增数据的主键ID,我们需要使用繁琐的 PreparedStatementCreator ,通过引入SimpleJdbcInsert,SimpleJdbcInsert对JdbcTemplate进行了包装,能够更容易的将数据插入到表中。
package cn.coreqi.springaction.repository.Impl; import cn.coreqi.springaction.entity.User; import cn.coreqi.springaction.repository.TestRepository; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.simple.SimpleJdbcInsert; import java.util.Map; public class JdbcTestRepositoryImpl implements TestRepository { private SimpleJdbcInsert userInserter; private ObjectMapper objectMapper; @Autowired public JdbcTestRepositoryImpl(JdbcTemplate jdbcTemplate){ this.userInserter = new SimpleJdbcInsert(jdbcTemplate) .withTableName("t_user") .usingGeneratedKeyColumns("id"); this.objectMapper = new ObjectMapper(); } /** * 新增用户并返回新增用户的主键 * @param user 新增用户 * @return 数据库中该新增用户主键 */ @Override public Long save(User user) { Map<String,Object> values = objectMapper.convertValue(user,Map.class); Long userId = userInserter.executeAndReturnKey(values).longValue(); return userId; } }
SimpleJdbcInsert有两个非常有用的方法来执行数据插入操作:execute()和executeAndReturnKey()。他们都接收Map<String,Object>作为参数,其中Map的Key对应表中要插入数据的列明,而Map中的Value则对应要插入到列中的实际值。
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/13072544.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
分类:
Spring Data
如果文章内容对您有所帮助,欢迎赞赏.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!