JDBCTemplate

  1. JdbcTemplate是Spring的一部分,是对数据库的操作在jdbc的封装,处理了资源的建立和释放(不需要我们管理连接了),我们只需要提供SQL语句(不需要我们设置参数了)和提取结果(查询时候可以直接返回对应的实体类),使JDBC更加易于使用。
    JdbcTemplate使用spring的注入功能,把DataSource注册到JdbcTemplate之中。

  2. DataSource是JDBC2.0 提供了javax.sql.DataSource接口,它负责建立与数据库的连接,当在应用程序中访问数据库时不必编写连接数据库的代码,直接引用DataSource获取数据库的连接对象即可。用于获取操作数据Connection对象。
  3. 除了JDBC外都有DataSource对象。

    DataSource可以看作数据源,它封装了数据库参数,连接数据库,程序中操作DataSource对象即可对数据库进行增删改查操作。

    不同方式中使用的DataSource对象不同。列举如下:

    1,DBCP框架

    dbcp框架中的DataSource类是:org.apache.commons.dbcp.BasicDataSource

    这是commons-dbcp.jar包中的类。

    2,C3P0框架

    c3p0框架的DataSource类是:com.mchange.v2.c3p0.ComboPooledDataSource

    这是c3p0.jar包中的类。

    3,MyBatis框架

    MyBatis框架的DataSource类是:org.apache.ibatis.datasource.pooled.PooledDataSource

    这是mybatis.jar包中的类。

  4. jdbcTemplate的方法使用

    update:执行增删改操作

    

         JdbcTemplate jdbcTemplate = new JdbcTemplate(unitl.getDataSource());

         String sql6 = "update emp set ename='sb' where ename=?";
int update = jdbcTemplate.update(sql6,"庞统");
System.out.println(update);

    queryForMap查询结果集长度只能为1的map集合,值为value,列名为key

     String sql = "select * from emp where ename =?";
Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql,"关羽");
System.out.println(stringObjectMap);

    queryForList将查询到的结果集放到list集合中,一条数据是一条map集合

      String sql2 = "select * from emp";
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql2);
System.out.println(maps);

    queryForObject查询结果封装为对象,一般是用于聚集函数

        String sql7 = "select count(*) from emp";
Integer integer = jdbcTemplate.queryForObject(sql7, Integer.class);
System.out.println(integer);

    query查询结果封装为javabean对象。query的参数:rowMapper。一般使用BeanPropertyRowMapper完成自动封装

       List<Emp> emp = jdbcTemplate.query(sql2, new BeanPropertyRowMapper<Emp>(Emp.class));
System.out.println(emp);

    数据库连接池的使用:c3p0,需要相应的jar包和c3p0-config.xml文件

  DataSource comboPooledDataSource = new ComboPooledDataSource();

        for (int i = 0; i < 10; i++) {
Connection connection = comboPooledDataSource.getConnection();
System.out.println(connection);
}

    数据库连接池的使用:druid,需要相应的jar包和druid.properties文件

 Properties properties = new Properties();
try {
resource= unitl.class.getClassLoader().getResource("druid.properties").toURI();
}catch (URISyntaxException e){
e.printStackTrace();
}
try {
properties.load(new FileInputStream(new File(resource)));
}catch (IOException e){
e.printStackTrace();
}
try {
dataSource = DruidDataSourceFactory.createDataSource(properties);
}catch (Exception e){
e.printStackTrace();
}
Connection con = dataSource.getConnection();

JDBCTemplate初学简介的更多相关文章

  1. Spring JdbcTemplate详解

    为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架. 作为 SpringJDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 ...

  2. Spring 梳理-JdbcTemplate简介

    JdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中. JdbcTempla ...

  3. 初学Nutch之简介与安装

    1.Nutch简介 Nutch是一个由Java实 现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行 查询 ...

  4. Spring初学之使用JdbcTemplate

    Spring中使用JdbcTemplate.JdbcDaoSupport和NamedParameterJdbcTemplate来操作数据库,但是JdbcTemplate最常用,最易用. jdbc.pr ...

  5. SpringBoot初学(4)– JdbcTemplate和Mybatis

    前言 github: https://github.com/vergilyn/SpringBootDemo 代码位置: 一.Spring Boot集成JdbcTemplate或NamedParamet ...

  6. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring JDBCTemplate简介

    Spring 框架针对数据库开发中的应用提供了 JDBCTemplate 类,该类是 Spring 对 JDBC 支持的核心,它提供了所有对数据库操作功能的支持. Spring 框架提供的JDBC支持 ...

  7. 初学python-字符串中引号的使用、input简介、强制类型转换、加减乘除简写、条件判断

    一.字符串中单引号和双引号的使用: 1.字符串以英文单引号' '引用.eg:'Hello World' 2.若字符串中含有单引号,则以英文双引号" "引用.eg:"I'm ...

  8. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. 初学Spring有没有适合的书

    初学者之前没有阅读java框架源码的习惯.没有阅读过源码,知道整体流程么?知道依赖注入的概念么?知道aop么?知道其中用到了哪些设计模式么?再说了,如果一上手就是源码?难道你没有注意到Spring的类 ...

随机推荐

  1. Vuex入门实践(中)-多module中的state、mutations、actions和getters

    一.前言 上一篇文章<Vuex入门实践(上)>,我们一共实践了vuex的这些内容: 1.在state中定义共享属性,在组件中可使用[$store.state.属性名]访问共享属性 2.在m ...

  2. 《图解机器学习-杉山将著》读书笔记---CH2

    CH2 学习模型 重点提炼 学习模型作用: 使特定函数与数据集相近似 学习模型类型: 1.线性模型 (1)最简单的线性模型,缺点:只能表现线性的输入输出函数,不能很好地解决实际问题 (2)基于参数的线 ...

  3. FastJSON将Java对象转为json,日期显示时间戳未格式化解决办法

    JSON版本:FastJson Java 对象转换为 JSON 格式 定义以下 Person JavaBean: public class Person { @JSONField(name = &qu ...

  4. 【一起学源码-微服务】Feign 源码二:Feign动态代理构造过程

    前言 前情回顾 上一讲主要看了@EnableFeignClients中的registerBeanDefinitions()方法,这里面主要是 将EnableFeignClients注解对应的配置属性注 ...

  5. 【转】面向GC的Java编程

    Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都能够很好地处理堆(Heap)的清理问题.以至于许多Java程序员认为,我只需要关心何时创建对象,而回收对象, ...

  6. spring boot通过@Bean注解定义一个Controller

    功能需求 提供一个公共的jar包给其他业务模块依赖,需要在这个公共的jar中暴露一个restful API 采用spring auto config机制,在公共jar包中定义spring.factor ...

  7. CTO说|非容器化应用怎么玩多云?Kubernetes不管我们管啊

    Kubernetes已经成为容器编排系统的事实标准,是现在主流的跨云容器化应用操作系统. 但是,Kubernetes的目标并不是容器本身,而是承载其上的应用,本质上是为了解决(容器化)应用上云这个难题 ...

  8. uni-app,vue,react,Trao之缓存类封装

    uni-app,vue,react,Trao之缓存类封装 一,介绍与需求 1.1,介绍 缓存主要分为如下几个 1.LocalStorage LocalStorage是永久性的本地缓存,存储在客户端的浏 ...

  9. 区间dp - 全部按下一列石头

    There is one last gate between the hero and the dragon. But opening the gate isn't an easy task. The ...

  10. 初识 ST 表

    推荐博客 : https://blog.csdn.net/BerryKanry/article/details/70177006 ST表通常用于RMQ问题中,询问某个区间的最值这类问题中 ST表的核心 ...