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批处理的实现的更多相关文章

  1. 玩转Spring全家桶笔记 04 Spring的事务抽象、事务传播特性、编程式事务、申明式事务

    1.Spring 的事务抽象 Spring提供了一致的事务模型 JDBC/Hibernate/Mybatis 操作数据 DataSource/JTA 事务 2.事务抽象的核心接口 PlatformTr ...

  2. 玩转Spring全家桶笔记 02 那些好用的连接池HikariCP

    1.前言 简单了解一下来自日本的一个新起之秀连接池---HikariCP github:https://github.com/brettwooldridge/HikariCP 2.HikariCP为什 ...

  3. Spring全家桶系列–SpringBoot渐入佳境

    //本文作者:cuifuan //本文将收录到菜单栏:<Spring全家桶>专栏中 首发地址:https://www.javazhiyin.com/20913.html 萌新:小哥,我在实 ...

  4. Java秋招面试复习大纲(二):Spring全家桶+MyBatis+MongDB+微服务

    前言 对于那些想面试高级 Java 岗位的同学来说,除了算法属于比较「天方夜谭」的题目外,剩下针对实际工作的题目就属于真正的本事了,热门技术的细节和难点成为了面试时主要考察的内容. 这里说「天方夜谭」 ...

  5. 最全153道Spring全家桶面试题,你都碰到过哪些?(含答案解析)

    前言 Spring 框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶. 毋庸置疑,Spring 早已成为 Java 后端开发的行业标准,无数的公司选择 Spring 作为基础的 ...

  6. 10分钟详解Spring全家桶7大知识点

    Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案.有人亲切的称之为 ...

  7. Spring全家桶–SpringBoot Rest API

    Spring Boot通过提供开箱即用的默认依赖或者转换来补充Spring REST支持.在Spring Boot中编写RESTful服务与SpringMVC没有什么不同.总而言之,基于Spring ...

  8. Spring全家桶系列–SpringBoot之AOP详解

    //本文作者:cuifuan //本文将收录到菜单栏:<Spring全家桶>专栏中 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关 ...

  9. Spring全家桶系列–[SpringBoot入门到跑路]

    //本文作者:cuifuan Spring全家桶————[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ...

随机推荐

  1. POJ 1741.Tree and 洛谷 P4178 Tree-树分治(点分治,容斥版) +二分 模板题-区间点对最短距离<=K的点对数量

    POJ 1741. Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 34141   Accepted: 11420 ...

  2. 02-线性结构3 Reversing Linked List (25 分)

    Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...

  3. inotify 监控文件系统操作

    path0=path1=########################################################dir2watch1=/home/nanjing2/GridON ...

  4. 剑指offer:扑克牌顺子

    题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他 ...

  5. [web 前端] 封装简单的axios库

    转载自https://blog.csdn.net/qq_35844177/article/details/78809499 1.新建http.js文件,封装axios get post 方法 impo ...

  6. SQL优化-如何分析性能瓶颈

    MySQL优化一览图 笔者将优化分为了两大类:软优化和硬优化.软优化一般是操作数据库即可:而硬优化则是操作服务器硬件及参数设置. 1.软优化 1)查询语句优化 首先我们可以用EXPLAIN或DESCR ...

  7. Python实例100个(基于最新Python3.7版本)

    Python3 100例 原题地址:   http://www.runoob.com/python/python-100-examples.html    git地址:    https://gith ...

  8. vi中使用删除键(backspace)只能删除到行首不能跳到上一行怎么处理?

    答: 在~/.vimrc中加入以下内容: set backspace=2

  9. js组件常用封装方法。。。。。【组件封装】 ★★★★★★

    公共弹窗js写法:mcake弹窗封装Dialog.js function Dialog(bg,els,opts) { this.$els = $(els); this.$Dialogbg = $(bg ...

  10. App installation failed (A valid provisioning profile for this executable was not found)

    真机调试build success ,App installation failed (A valid provisioning profile for this executable was not ...