Spring JDBC(二)SimpleJdbcInsert
上一篇写了关于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参数进行了封装,两个常用的实现BeanPropertySqlParameterSource和MapSqlParameterSource,BeanPropertySqlParameterSource可以通过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的更多相关文章
- Spring JDBC SimpleJdbcInsert类示例
org.springframework.jdbc.core.SimpleJdbcInsert类是一个多线程,可重用的对象,为将数据插入表提供了易用的功能.它提供元数据处理以简化构建基本insert语句 ...
- spring学习二:jdbc相关回顾以及spring下dao
目录: Part一:回顾java web部分的jdbc.事务.连接池和dbutils工具等 : Part二:spring的JdbcTemplate使用: Part三:spring的事务处理: Part ...
- Spring(十二)之JDBC框架
JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQ ...
- Spring JDBC
转载:博客主页:http://blog.csdn.NET/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内 ...
- Spring JDBC SqlQuery类示例
org.springframework.jdbc.object.SqlQuery类提供了表示SQL查询的可重用操作对象. 使用到的 Student 表的结构如下 - CREATE TABLE Stud ...
- Spring学习进阶(四) Spring JDBC
Spring JDBC是Spring所提供的持久层技术.主要目的是降低使用JDBC API的门槛,以一种更直接,更简洁的方式使用JDBC API.在Spring JDBC里用户仅需要做哪些比不可少的事 ...
- Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控
前言 作为一名 Java 开发者,相信对 JDBC(Java Data Base Connectivity)是不会陌生的,JDBC作为 Java 基础内容,它提供了一种基准,据此可以构建更高级的工具和 ...
- Spring04-SpringEL&Spring JDBC数据访问
一. SpringEL入门 Spring动态语言(简称SpEL) 是一个支持运行时查询和操作对象图的强大的动态语言,语法类似于EL表达式,具有诸如显示方法和基本字符串模板函数等特性. 1. 准备工作 ...
- ref:Spring JDBC框架
ref:https://blog.csdn.net/u011054333/article/details/54772491 Spring JDBC简介 先来看看一个JDBC的例子.我们可以看到为了执行 ...
- Spring JDBC SqlUpdate类示例
org.springframework.jdbc.object.SqlUpdate类提供了表示SQL更新的可重用操作对象. 使用到的 Student 表的结构如下 - CREATE TABLE Stu ...
随机推荐
- ZOJ 3777-Problem Arrangement(状压DP)
B - Problem Arrangement Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %l ...
- A Walk Through the Forest
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- 使用sklearn进行数据挖掘-房价预测(6)—模型调优
通过上一节的探索,我们会得到几个相对比较满意的模型,本节我们就对模型进行调优 网格搜索 列举出参数组合,直到找到比较满意的参数组合,这是一种调优方法,当然如果手动选择并一一进行实验这是一个十分繁琐的工 ...
- BOM对象
每一个frames都有自己的window对象,也就是每个frames都有自己的全局对象,它们之前是相互独立的,包括各自独立的本地对象,top.Object !== top.frames[0].Obje ...
- Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”
今天老板让我验证一下技术可行性,记录下来. 需求 :定位手机的位置并在百度地图上显示,得到位置后使用前置摄像头进行抓拍 拿到这个需求后,对于摄像头的使用不太熟悉,于是我先做了定位手机并在百度地图上显示 ...
- MSBuild Tools解决办法
每次在CI上通过Msbuild做发布,基本都会碰到下面的问题 error MSB4019: 未找到导入的项目"C:\Program Files (x86)\MSBuild\Microsoft ...
- 532. K-diff Pairs in an Array
Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in t ...
- C#中抽象类与接口的区别
1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分.或者说,它是面向对象 ...
- c#DES加密解密代码
//加密 public string DesEncrypt(string strText, string strEncrKey) { byte[] byKey=null; byte[ ...
- SSM :MyBatis与Spring的整合
MyBatis与Spring的整合 一:Spring整合MyBatis的准备工作: (1.)在项目中加入Spring,ByBatis及整合相关的jar文件 (2.)建立开发目录结构,创建实体类 (3. ...