玩转Spring全家桶笔记 03 Spring的JDBC操作以及SQL批处理的实现
1 spring-jdbc
- core JdbcTemplate 等相关核心接口和类(核心)
- datesource 数据源相关的辅助类(内嵌数据源的初始化)
- object 将基本的JDBC操作封装成对象
- support 错误码等其他辅助工具
2.在学习之前先了解一下如何去通过注解实现一个Bean
- @Component 通用注解 用来注解一个通用的Bean 一般作为一个工具Bean
- @Repository 数据操作的一个仓库
- @Service 服务业务
- @Controller SpringMVC
- @RestController
3.简单的JDBC 操作
- query
- queryForObject
- queryForList
- update 实现插入和修改删除
- execute
4. 代码上手操作
新建一个UserRepository 使用@Repository注解注释为一个数据操作的仓库
@Autowired
private JdbcTemplate jdbcTemplate; /***
* 插入数据
*
* @Author MRC
* @Date 2019年6月4日 上午11:12:56
*/
public void insertData() { Arrays.asList("123","456").forEach(bar -> { jdbcTemplate.update("insert into user(id,username,password) values(?,?,?)", bar,bar,bar); });
}
2.查询数据
public void listData() {
//查询单个
System.out.println(jdbcTemplate.queryForObject("select count(id) from user", Long.class)); //查询list
List<String> list = jdbcTemplate.queryForList("select id from user",String.class); list.forEach(id -> { System.out.println("id--->"+id); }); //查询出来的数据与对象进行关联
List<User> users = jdbcTemplate.query("select * from user", new RowMapper<User>() { @Override
public User mapRow(ResultSet arg0, int arg1) throws SQLException { return new User(arg0.getString("id"), arg0.getString("username"), arg0.getString("password"));
}
}); users.forEach(user -> {
System.out.println("user--->"+user); });
}
3.使用SimpleJdbcInsert 代替JdbcTemplate 实现最基本的查询
@Autowired
private SimpleJdbcInsert simpleJdbcInstall; //注入两个对象
@Bean
@Autowired
public SimpleJdbcInsert simpleJdbcInsert(JdbcTemplate jdbcTemplate) { //将User表与SimpleJdbcInsert关联到一起
return new SimpleJdbcInsert(jdbcTemplate).withTableName("user").usingGeneratedKeyColumns("id"); } @Bean
@Autowired
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(DataSource dataSource) {
return new NamedParameterJdbcTemplate(dataSource);
}
3.1 使用SimpleJdbcTemplate
HashMap<String, String> row = new HashMap<>();
//id会自动生成 采用自增长主键
row.put("username", "ddd");
row.put("password", "345"); Number id = simpleJdbcInstall.executeAndReturnKey(row);
System.out.println(id);
5. SQL批处理
JdbcTemplate
- batchUpdate
- BatchPreparedStatementSetter
NamedParameterJdbcTemplate
- batchUpdate
- SqlParameterSourceUtils.createBatch
5.1 使用JdbcTemplate.batchUpdate 实现一个SQL批处理
public void batchInsert() {
//使用Jdbc批量操作数据
jdbcTemplate.batchUpdate("insert into user(username,password) values(?,?)", new BatchPreparedStatementSetter() { //sql语句里面的?进行一个赋值
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setString(1, "user-"+i);
ps.setString(2, "pass-"+i); }
//批量操作次数
@Override
public int getBatchSize() {
return 5;
}
});
}
5.2使用 NamedParamterJdbcTemplate 实现一个SQL批处理
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate; public void batchInsert2() { List<User> users = new ArrayList<>();
//主键自增长 所以不写
users.add(new User("", "user-11", "pass-11"));
users.add(new User("", "user-12", "pass-12"));
users.add(new User("", "user-13", "pass-13")); namedParameterJdbcTemplate.batchUpdate("insert into user(username,password) values(:username,:password)", SqlParameterSourceUtils.createBatch(users)); }
示例代码:https://gitee.com/mrc1999/SpringBoot-study-book/tree/master/03JdbcTemplate
玩转Spring全家桶笔记 03 Spring的JDBC操作以及SQL批处理的实现的更多相关文章
- 玩转Spring全家桶笔记 04 Spring的事务抽象、事务传播特性、编程式事务、申明式事务
1.Spring 的事务抽象 Spring提供了一致的事务模型 JDBC/Hibernate/Mybatis 操作数据 DataSource/JTA 事务 2.事务抽象的核心接口 PlatformTr ...
- 玩转Spring全家桶笔记 02 那些好用的连接池HikariCP
1.前言 简单了解一下来自日本的一个新起之秀连接池---HikariCP github:https://github.com/brettwooldridge/HikariCP 2.HikariCP为什 ...
- Spring全家桶系列–SpringBoot渐入佳境
//本文作者:cuifuan //本文将收录到菜单栏:<Spring全家桶>专栏中 首发地址:https://www.javazhiyin.com/20913.html 萌新:小哥,我在实 ...
- Java秋招面试复习大纲(二):Spring全家桶+MyBatis+MongDB+微服务
前言 对于那些想面试高级 Java 岗位的同学来说,除了算法属于比较「天方夜谭」的题目外,剩下针对实际工作的题目就属于真正的本事了,热门技术的细节和难点成为了面试时主要考察的内容. 这里说「天方夜谭」 ...
- 最全153道Spring全家桶面试题,你都碰到过哪些?(含答案解析)
前言 Spring 框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶. 毋庸置疑,Spring 早已成为 Java 后端开发的行业标准,无数的公司选择 Spring 作为基础的 ...
- 10分钟详解Spring全家桶7大知识点
Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案.有人亲切的称之为 ...
- Spring全家桶–SpringBoot Rest API
Spring Boot通过提供开箱即用的默认依赖或者转换来补充Spring REST支持.在Spring Boot中编写RESTful服务与SpringMVC没有什么不同.总而言之,基于Spring ...
- Spring全家桶系列–SpringBoot之AOP详解
//本文作者:cuifuan //本文将收录到菜单栏:<Spring全家桶>专栏中 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关 ...
- Spring全家桶系列–[SpringBoot入门到跑路]
//本文作者:cuifuan Spring全家桶————[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...
随机推荐
- windows sh.exe 中文乱码
idea 需要重启 export LANG=zh_CN.utf-8 alias ls='ls --show-control-chars --color=auto'
- hadoop jps不显示信息
使用kvm做了一个hadoop组件的镜像,使用该镜像启动,在使用jps的时候,没有任何信息显示. 解决: 删除/tmp下的hsper开头文件,哪个用户没有权限就删除对应的hsper**_usernam ...
- element ui input 输入时触发事件
<el-form-item label="客户名" :label-width="labelWidth"> <el-input v-model= ...
- JS filter的使用
定义和用法 filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素. 注意: filter() 不会对空数组进行检测. 注意: filter() 不会改变原始数组 ...
- hdoj - 1506 直方图中最大的矩形
Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a commo ...
- php7 yum安装
CentOs 7.X: rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm rpm -Uvh https://mirror.we ...
- Xamarin图表开发基础教程(4)OxyPlot框架
Xamarin图表开发基础教程(4)OxyPlot框架 XamaminAndroid中绘制线图OxyPlotAndroidDemo [示例1-1:OxyPlotAndroidDemo]下面实现线图的绘 ...
- odoo开发笔记 -- 异常处理in resolve_deps field = model
场景描述: 更新代码,重启服务服务后,odoo后台报错,提示关键字:in resolve_deps field = model._fields[fname] KeyError: 'entry_id' ...
- docker本地化异常:/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
docker中经常设置不了 环境变量$LC_ALL, 导致报很多奇怪的编码错误: /bin/sh: warning: setlocale: LC_ALL: cannot change locale ...
- jdk1.7 64位官方下载
平时要新装一个系统环境,或者下载最新的jdk,就需要到oracle官网去下载一个jdk,而目前生产环境都是1.7的环境下开发完成的,需要下载1.7版本的jdk,oracle官方网站的默认下载页面是1. ...