上一篇写了关于jdbcTemplate的一些基本使用,这一篇来聊聊SimpleJdbcInsert

SimpleJdbcInsert是springjdbc提供的一个简化插入操作的类,下面来看一下常用的api

创建SimpleJdbcInsert实例

创建一个用户表

  1. CREATE TABLE `user` (
  2. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3. `password` varchar(255) DEFAULT NULL,
  4. `user_name` varchar(255) DEFAULT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建实例

  1. private SimpleJdbcInsert simpleJdbcInsert;
  2. private DriverManagerDataSource dataSource;
  3. @Before
  4. public void init() {
  5. dataSource = new DriverManagerDataSource();
  6. dataSource.setDriverClassName("com.mysql.jdbc.Driver");
  7. dataSource.setUrl("jdbc:mysql://localhost:3306/blogsrc?useUnicode=true&characterEncoding=UTF-8");
  8. dataSource.setUsername("root");
  9. dataSource.setPassword("zhao");
  10. simpleJdbcInsert = new SimpleJdbcInsert(dataSource);
  11. }

新增

通过withTableName绑定需要操作的数据库表,然后指定新增的参数

  1. /**
  2. * simpleJdbcInsert新增
  3. */
  4. @Test
  5. public void insertTest() {
  6. Map<String, Object> parameters = new HashMap<String, Object>(3);
  7. parameters.put("user_name", "小明");
  8. parameters.put("password", "123456");
  9. simpleJdbcInsert.withTableName("user").execute(parameters);
  10. }

返回主键

通过usingGeneratedKeyColumns指定主键,executeAndReturnKey执行并返回主键,返回的主键为Number类型,如有需要,自行转换

  1. /**
  2. * simpleJdbcInsert新增,并返回主键
  3. */
  4. @Test
  5. public void insertAndReturnPrimaryKeyTest() {
  6. Map<String, Object> parameters = new HashMap<String, Object>(3);
  7. parameters.put("user_name", "小明");
  8. parameters.put("password", "123456");
  9. Number primaryKey = simpleJdbcInsert.withTableName("user")
  10. .usingGeneratedKeyColumns("id")// 指定主键列名
  11. .executeAndReturnKey(parameters);
  12. System.out.println("主键为:" + primaryKey);
  13. }

限制插入的列

usingColumns方法可以限制插入的列

  1. /**
  2. * simpleJdbcInsert新增,返回主键,并限制插入的列
  3. */
  4. @Test
  5. public void usingColumnsTest() {
  6. Map<String, Object> parameters = new HashMap<String, Object>(3);
  7. parameters.put("user_name", "小明");
  8. parameters.put("password", "123456");
  9. Number primaryKey = simpleJdbcInsert.withTableName("user")
  10. .usingColumns("user_name")// 限制输入的列,因为限制只新增用户名,所以password的值不会进数据库
  11. .usingGeneratedKeyColumns("id")// 指定主键列名
  12. .executeAndReturnKey(parameters);
  13. System.out.println("主键为:" + primaryKey);
  14. }

SqlParameterSource

SqlParameterSource接口对sql参数进行了封装,两个常用的实现BeanPropertySqlParameterSourceMapSqlParameterSourceBeanPropertySqlParameterSource可以通过javabean构造,MapSqlParameterSource则可以用map构造

  1. @Test
  2. public void sqlParameterSourceTest() {
  3. User user = new User();
  4. user.setUserName("小明");
  5. user.setPassword("123456");
  6. // BeanPropertySqlParameterSource
  7. SqlParameterSource sqlParm = new BeanPropertySqlParameterSource(user);
  8. simpleJdbcInsert.withTableName("user").execute(sqlParm);
  9. // MapSqlParameterSource
  10. simpleJdbcInsert = new SimpleJdbcInsert(dataSource);
  11. Map<String, Object> mapParameters = new HashMap<String, Object>();
  12. mapParameters.put("user_name", "小明");
  13. mapParameters.put("password", "123456");
  14. SqlParameterSource sqlParmMap = new MapSqlParameterSource(mapParameters);
  15. simpleJdbcInsert.withTableName("user").execute(sqlParmMap);
  16. simpleJdbcInsert = new SimpleJdbcInsert(dataSource);
  17. // 也可以通过MapSqlParameterSource addValue 添加参数
  18. SqlParameterSource sqlParmMapAdd = new MapSqlParameterSource()
  19. // addValues(map) 一次添加多个参数
  20. .addValue("user_name", "小明")// 单个添加
  21. .addValue("password", "123456");
  22. simpleJdbcInsert.withTableName("user").execute(sqlParmMapAdd);
  23. }

需要注意jdbcTemplate是线程安全的,所以可以一直使用同一个实例,但simpleJdbcInsert不是线程安全的,每次使用都要获取一个新的simpleJdbcInsert实例

完整的源码 https://github.com/zhaoguhong/blogsrc

Spring JDBC(二)SimpleJdbcInsert的更多相关文章

  1. Spring JDBC SimpleJdbcInsert类示例

    org.springframework.jdbc.core.SimpleJdbcInsert类是一个多线程,可重用的对象,为将数据插入表提供了易用的功能.它提供元数据处理以简化构建基本insert语句 ...

  2. spring学习二:jdbc相关回顾以及spring下dao

    目录: Part一:回顾java web部分的jdbc.事务.连接池和dbutils工具等 : Part二:spring的JdbcTemplate使用: Part三:spring的事务处理: Part ...

  3. Spring(十二)之JDBC框架

    JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQ ...

  4. Spring JDBC

    转载:博客主页:http://blog.csdn.NET/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内 ...

  5. Spring JDBC SqlQuery类示例

    org.springframework.jdbc.object.SqlQuery类提供了表示SQL查询的可重用操作对象. 使用到的 Student 表的结构如下 - CREATE TABLE Stud ...

  6. Spring学习进阶(四) Spring JDBC

    Spring JDBC是Spring所提供的持久层技术.主要目的是降低使用JDBC API的门槛,以一种更直接,更简洁的方式使用JDBC API.在Spring JDBC里用户仅需要做哪些比不可少的事 ...

  7. Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控

    前言 作为一名 Java 开发者,相信对 JDBC(Java Data Base Connectivity)是不会陌生的,JDBC作为 Java 基础内容,它提供了一种基准,据此可以构建更高级的工具和 ...

  8. Spring04-SpringEL&Spring JDBC数据访问

    一. SpringEL入门 Spring动态语言(简称SpEL) 是一个支持运行时查询和操作对象图的强大的动态语言,语法类似于EL表达式,具有诸如显示方法和基本字符串模板函数等特性. 1. 准备工作 ...

  9. ref:Spring JDBC框架

    ref:https://blog.csdn.net/u011054333/article/details/54772491 Spring JDBC简介 先来看看一个JDBC的例子.我们可以看到为了执行 ...

  10. Spring JDBC SqlUpdate类示例

    org.springframework.jdbc.object.SqlUpdate类提供了表示SQL更新的可重用操作对象. 使用到的 Student 表的结构如下 - CREATE TABLE Stu ...

随机推荐

  1. jQuery源码的一个坑

    纯吐槽 大半夜也真是够了,想学着jQ造个小轮子巩固下js,结果一开始就卡住了. 虽然之前也看过源码,但是主要是研究方法实现什么的,对于框架主函数和入口结构不怎么熟悉,于是想着一步一步调试看看. $(' ...

  2. 负载均衡集群企业级应用实战—LVS

    一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...

  3. 2017CCPC秦皇岛G ZOJ 3987Numbers(大数+贪心)

    Numbers Time Limit: 2 Seconds      Memory Limit: 65536 KB DreamGrid has a nonnegative integer n . He ...

  4. poj3270Cow Sorting(置换+贪心)

    Cow Sorting Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7587   Accepted: 2982 Descr ...

  5. 暑假练习赛 007 B - Weird Cryptography

    Weird Cryptography Description standard input/outputStatements Khaled was sitting in the garden unde ...

  6. Disharmony Trees

    /* 写完这篇博客有很多感慨,过去一段时间都是看完题解刷题,刷题,看会题解,没有了大一那个时候什么都不会的时候刷题的感觉,这个题做了一天半,从开始到结束都是从头开始自己构思的很有感觉,找回到当初的感觉 ...

  7. spring boot跨域设置

    定义 跨域是指从一个域名的网页去请求另一个域名的资源 跨域背景 限制原因 如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题 为什么要跨域 公司内部有多个不 ...

  8. ORA-01745: 无效的主机/绑定变量名 ORA-00917: 缺失的逗号 oracle日期格式错误

    今天在oracle中执行插入语句的时候报了一个奇怪的错误,在程序中报的错误是ORA-01745: 无效的主机/绑定变量名,网上一查说是缺失逗号,在查询分析器执行的时候报缺失的逗号,仔细看了一下也没有缺 ...

  9. asp.net core 2.0集成signalr

    在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.NET CORE貌似挺流行的,闲来无事也自己搞了个asp.net cor ...

  10. CentOS 7 yum 安装ownCloud 搭建云盘服务器

    基于CentOS7.0 64位系统+ownCloud 10.0 稳定版本构建 ownCloud 是一个开源免费专业的私有云存储项目,它能帮你快速在个人电脑或服务器上架设一套专属的私有云文件同步网盘,可 ...