玩转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一旦出错之后错误难寻,这也是为什么 ...
随机推荐
- 了解Python-白 驹 过 隙 , 忽 然 而 已
白 驹 过 隙 , 忽 然 而 已 人 生 苦 短,我 用 Python -- Life is short , you need Python 代码量少,同一样问题 ,用不同的语言解决时,一般情况下P ...
- 原创:logistic regression实战(一):SGD Without lasso
logistic regression是分类算法中非常重要的算法,也是非常基础的算法.logistic regression从整体上考虑样本预测的精度,用判别学习模型的条件似然进行参数估计,假设样本遵 ...
- GoCN每日新闻(2019-10-19)
GoCN每日新闻(2019-10-19) Go 1.13中的错误处理 https://tonybai.com/2019/10/18/errors-handling-in-go-1-13 golang核 ...
- kvm错误:failed to initialize KVM: Permission denied
错误1: 启动kvm容器报错: # virsh start hadoop-test error: Failed to start domain hadoop-testerror: internal e ...
- go 指南学习笔记
1 If for 后面没有小括号.后面的花括号,要在当前行,并且中间有内容,右花括号要单独一行. 因为go会格式化代码,自动插入分号. 2 函数和方法的区别: 方法需要有一个接受者(select ...
- svg入门详解
一.svg是什么? SVG 意为可缩放矢量图形(Scalable Vector Graphics). SVG 是使用 XML 来描述二维图形和绘图程序的语言. SVG 图像在放大或改变尺寸的情况下其图 ...
- 解决idea创建Maven项目速度慢
idea在创建maven项目的时候会去网上自动下载需要的插件,这样就会导致项目创建后一直处于下载插件的状态中,影响开发效率 此时我们可以在创建maven骨架的时候,加入键值对来让maven调用本地的骨 ...
- 转:【微信公众号】微信snsapi_base静默授权与snsapi_userinfo网页授权的实现(不建议使用静默,直接用主动比较方便)
版权声明:本文为CSDN博主「小璐謌」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/qq_37462176/ ...
- openresty开发系列33--openresty执行流程之2重写赋值阶段
openresty开发系列33--openresty执行流程之2重写赋值阶段 一)重写赋值阶段 1)set_by_lua 语法:set_by_lua $res <lua-script-str&g ...
- Laya微信小游戏的开放域
版本2.1.1.1 现在Laya的开放域比较好用了. 新建开放域项目,里面直接有个排行榜的示例. 直接发布 得到较少的文件,复制这些文件,粘贴到主项目bin/openDataContext下. (op ...