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

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

创建SimpleJdbcInsert实例

创建一个用户表

CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`password` varchar(255) DEFAULT NULL,
`user_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建实例

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

新增

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

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

返回主键

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

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

限制插入的列

usingColumns方法可以限制插入的列

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

SqlParameterSource

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

@Test
public void sqlParameterSourceTest() {
User user = new User();
user.setUserName("小明");
user.setPassword("123456");
// BeanPropertySqlParameterSource
SqlParameterSource sqlParm = new BeanPropertySqlParameterSource(user);
simpleJdbcInsert.withTableName("user").execute(sqlParm); // MapSqlParameterSource
simpleJdbcInsert = new SimpleJdbcInsert(dataSource);
Map<String, Object> mapParameters = new HashMap<String, Object>();
mapParameters.put("user_name", "小明");
mapParameters.put("password", "123456");
SqlParameterSource sqlParmMap = new MapSqlParameterSource(mapParameters);
simpleJdbcInsert.withTableName("user").execute(sqlParmMap); simpleJdbcInsert = new SimpleJdbcInsert(dataSource);
// 也可以通过MapSqlParameterSource addValue 添加参数
SqlParameterSource sqlParmMapAdd = new MapSqlParameterSource()
// addValues(map) 一次添加多个参数
.addValue("user_name", "小明")// 单个添加
.addValue("password", "123456");
simpleJdbcInsert.withTableName("user").execute(sqlParmMapAdd);
}

需要注意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. Lua函数以及闭合函数的理解

    Lua函数以及闭合函数的理解 来源 http://blog.csdn.net/mydad353193052/article/details/48731467 词法域和第一类型 在C/C++,C#或者J ...

  2. C++获取Windows7 32位系统中所有进程名(类似于任务管理器中的进程)

    代码是网上查找资料,然后自己调试,修改之后可以运行. 系统:win7 32位,VS2008 ------------------------------------------------------ ...

  3. struts2常见错误

    1.Caught exception while loading file struts-default.xml - [unknown location]解决办法:由于lib包冲突造成的,将两个解析x ...

  4. [Bayesian] “我是bayesian我怕谁”系列 - Boltzmann Distribution

    使用Boltzmann distribution还是Gibbs distribution作为题目纠结了一阵子,选择前者可能只是因为听起来“高大上”一些.本章将会聊一些关于信息.能量这方面的东西,体会“ ...

  5. JavaNIO非阻塞模式

    package com.java.NIO; import java.io.IOException; import java.net.InetSocketAddress; import java.nio ...

  6. Android 开发笔记___SD卡基本操作

    package com.example.alimjan.hello_world; /** * Created by alimjan on 7/5/2017. */ import android.ann ...

  7. css变量

    CSS变量: 目前主流浏览器都已支持CSS变量,Edge 浏览器也支持 CSS 变量.用户可以方便地在css中使用自定义变量. <!DOCTYPE html> <html lang= ...

  8. socket阻塞IO流程图

    单线程 多线程

  9. 二:Maven中pom.xml元素详解

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6628201.html  一个pom.xml中包含了许多标签,各个标签是对项目生命周期.依赖管理的配置.常用的主 ...

  10. .NET读取Excel文件的三种方法的区别

    ASP.NET读取Excel文件方法一:采用OleDB读取Excel文件: 把Excel文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(strin ...