Spring的JDBC模板

Spring中提供了一个可以操作数据库的对象,这个对象封装了jdbc技术.这个对象就是JdbcTemplate,它与DBuitls中的QueryRunner很相似.

步骤:

1. 导包

基本4个组件包+2个日志包+c3p0连接池包+数据库驱动包+spring jdbc +spring tx 事务包

2. JDBC模板
  public void fun() throws Exception {ComboPooledDataSource dataSource = new ComboPooledDataSource();dataSource.setDriverClass("com.mysql.jdbc.Driver");dataSource.setJdbcUrl("jdbc:mysql:///test");dataSource.setUser("root");dataSource.setPassword("root");JdbcTemplate jt = new JdbcTemplate(dataSource);String sql = "insert into t_user values(null,'tom')";jt.update(sql);}
复制代码
3. JdbcTemplate的API
  • 增删改
  @Overridepublic void save(User u) {String sql = "insert into t_user value(null,?)";super.getJdbcTemplate().update(sql, u.getName());}@Overridepublic void delete(Integer id) {String sql = "delete from t_user where id = ?";super.getJdbcTemplate().update(sql, id);}@Overridepublic void update(User u) {String sql = "update t_user set name=? where id =?";super.getJdbcTemplate().update(sql, u.getName(), u.getId());}
复制代码
查询
  • 查询的返回值是一个对象
 @Overridepublic User find(Integer id) {String sql = "select * from t_user where id =?";User us = super.getJdbcTemplate().queryForObject(sql, new RowMapper<User>() {@Overridepublic User mapRow(ResultSet rs, int arg1) throws SQLException {User user = new User();user.setId(rs.getInt("id"));user.setName(rs.getString("name"));return user;}}, id);return us;}
复制代码
  • 查询的返回值是一个整数(聚合函数)
 @Overridepublic int findAllRecord() {String sql = "select count(*) from t_user";Integer record = super.getJdbcTemplate().queryForObject(sql, Integer.class);return record;}
复制代码
  • 查询的返回值是一个集合
 @Overridepublic List<User> findAll() {String sql = "select * from t_user";List<User> list = super.getJdbcTemplate().query(sql, new RowMapper<User>() {@Overridepublic User mapRow(ResultSet rs, int arg1) throws SQLException {User u = new User();u.setId(rs.getInt("id"));u.setName(rs.getString("name"));return u;}});return list;}
复制代码

为了不需要手动准备JDBC模板,我们可以继承一个类,从这个类中的方法中获得即可-JdbcDaoSupport

注意:当我们继承这个类的时候,我们直接调用父类的super.getJdbcTemplate()这个方法,即可获得JdbcTemplate.而配置文件中的依赖也不需要注入JdbcTemplate.我们直接在所要执行方法的对象依赖注入dataSource数据源即可.

 public class UserDaoImpl extends JdbcDaoSupport implements UserDao {@Overridepublic void save(User u) {String sql = "insert into t_user value(null,?)";super.getJdbcTemplate().update(sql, u.getName());}<bean name="UserDao" class="madness.dao.UserDaoImpl"><property name="dataSource" ref="dataSource"></property></bean>
复制代码

在实际开发中,因为数据库连接的配置信息可能会经常改动.所以我们使用properties配置文件

 jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql:///test
jdbc.user=root
jdbc.password=root
复制代码
 <bean name="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driverClass}"></property><property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property><property name="user" value="${jdbc.user}"></property><property name="password" value="${jdbc.password}"></property></bean>
复制代码

注意:properties文件中的配置信息,要加上前缀.因为我们的配置信息有可能与spring中的冲突.会导致读取不到我们的配置信息

转载于:https://juejin.im/post/5b7546b26fb9a0099407051e

SpringData JDBC相关推荐

  1. spring data jdbc 基本使用

    文章目录 配置 使用 创建表 创建实体类 创建操作接口Repository 读写数据 总结 官方文档: https://docs.spring.io/spring-data/jdbc/docs/1.0 ...

  2. jpa 原生sql 查询返回一个实体_spring data系列之jpa

    Springdata 系列之spring data jpa 背景:随着互联网技术的发展,现在的企业开发中用到的用于数据存储的产品,不再仅仅是关系型数据库,而是要根据场景需要选择不同的存储技术,比如用于 ...

  3. 本地部署SpringBootInitializr 【最新版】

    本地部署SpringBootInitializr [最新版] 几十年没写东西了,今天记录一个折腾 SpringBootInitializr 这东西不用介绍了, 在这里,git在这里 如果用IDEA或者 ...

  4. spring boot 整合多数据源JDBC、多数据源mybatis、多数据源springdata jpa

    目录 代码地址:(spring-boot github地址) 1.springboot整合JDBC 2.springboot整合mybatis 3.springboot整合springdata jpa ...

  5. SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合

    一.SpringBoot 简介: spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装.所以,你以前可以用spring做的事情,现在用spri ...

  6. 带你搭一个SpringBoot+SpringData JPA的环境

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家对SpringBoot和Spring Da ...

  7. 详细介绍springData

    1.什么是SpringData? Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库.Map-Reduce 框架.云数据服务等等:另外也包含对 ...

  8. mvc设计模式现在过时了吗_尚学堂115——设计模式、源码分析以及SpringData

    设计模式 什么是设计模式?你是否在你的代码里面使用过任何设计模式? 设计模式是在软件设计中常见问题的通用.可反复使用.多数人知晓的一种解决方案或模板:这些解决方案是在相当长的一段时间内由众多软件开发人 ...

  9. springboot 引入jdbc驱动_SpringBoot整合jdbc、durid、mybatis详解,数据库的连接就是这么简单...

    SpringBoot底层统一采用SpringData处理数据库,这一章主要来讲一下SpringBoot整合jdbc.durid.mybatis的方式. (一)整合jdbc 整合jdbc主要有三步: 1 ...

最新文章

  1. java 观察者模式
  2. C#中GDI绘制高质量平滑图形实例
  3. 常用的HTML标签(超文本标记语言)
  4. 用多媒体库 Bass.dll 播放 mp3 [15] - 设置与获取播放速度
  5. mysql统计每周每个学校新增学生数量_深入学习之mysql(四)聚合函数
  6. 设计模式 C++简单工厂模式
  7. linux文件目录与磁盘格式,Linux文件、目录与磁盘格式
  8. 每日一句20191126
  9. centos 7 install VirtualBox
  10. html面试要带电脑吗,前端面试巧妙回答浏览器兼容问题
  11. 全民一起VBA提高篇 第三十二回 Select 简化分枝结构,静态变量坐看沧海桑田
  12. Java 实现局域网聊天室功能(私聊,群聊)
  13. SQLServer下载与安装
  14. protobuf 3.5 java使用介绍(二)
  15. 服务器中1U、2U、4U指什么?
  16. 关于sungard和博彦的笔试
  17. 两本参考书,垒四百块砖的日子
  18. 最新开放的.Co域名注册向导
  19. iOS 调试友盟SDK和微信SDK集成后的兼容性
  20. AI技术如何打造智能客服

热门文章

  1. sublime text3 sql 格式化
  2. 判断某个字符出现的次数
  3. 软件汉化工具:eXeScope
  4. CMD发现一个得到字符串长度的方法
  5. C# 解析Excel中的那些事儿
  6. 受婴儿抓阄启发,谷歌让机器臂自学抓取物体,不用标注数据
  7. 谷歌AI的七个“不正经”玩法,个个能玩一整天
  8. DeepMind和Unity合作,创建虚拟世界来训练AI
  9. 『并发包入坑指北』之向大佬汇报任务
  10. 哪个中年IT男不是一边面对危机,一边咬牙硬抗【转】