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

最新文章

  1. URL.createObjectURL和URL.revokeObjectURL
  2. 2015.4.24 移动端,chrome不兼容或无法运行的一些具体问题
  3. Ext3文件系统mount选项和文件属性介绍
  4. 第一篇:初识bootstrap
  5. iOS中block的用法 以及和函数用法的区别
  6. Redis学习笔记-进阶
  7. Hadoop日记Day17---计数器、map规约、分区学习
  8. lintcode 中等题:subSets 子集
  9. css3种方法实现元素的绝对居中
  10. 二分PKU3273
  11. ExifInterface 多媒体文件附加信息
  12. Dockerfile指令总结
  13. 洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型
  14. 学习Identity Server 4的预备知识
  15. 自定义View总结2
  16. php 常用的知识点归集(上)
  17. Python学习笔记【Nginx】:Nginx使用与完全卸载
  18. Spring-boot 编写hello world
  19. Revit 开发将自己的窗口设置为Revit窗口
  20. Java学习之——JavaBeans

热门文章

  1. 01-复杂度2 Maximum Subsequence Sum (25 分)
  2. iphone中input按钮设置disabled属性出现灰色背景没有显示问题
  3. 2019牛客国庆集训派对day1
  4. EasyEarth三维可视化解决方案——智慧林业
  5. mingw w64的下载地址
  6. Django入门——《Python编程从入门到实践》
  7. Linux环境下查看历史操作命令及清除方法(history -c)
  8. Real-time ‘Actor-Critic’ Tracking
  9. kafka发送超大消息设置
  10. ora-8176原因及解决方法