一、JdbcTemplate准备工作

1.要使用JdbcTemplate就要先引入所需jar包

2.在xml文件中配置数据库资源,JdbcTemplate模板

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--配置注释扫描--><context:component-scan base-package="spring03day.JdbcTemplate_work01"></context:component-scan><!-- 配置数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="jdbc:mysql:///user_db" /><property name="username" value="root" /><property name="password" value="hsp" /><property name="driverClassName" value="com.mysql.jdbc.Driver" /></bean><!--配置jdbcTemplate模板--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--因为在org.springframework.jdbc.core.JdbcTemplate底层是通过set方法注入dataSource属性--><property name="dataSource" ref="dataSource"></property></bean>
</beans>

3.创建DAO类与Service类,并通过注解注入所需属性

package spring03day.JdbcTemplate_work01.Service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import spring03day.JdbcTemplate_work01.Dao.BookDao;@Service
public class BookService {//注入BookDao实现类@Autowiredprivate BookDao bookDao;
}
package spring03day.JdbcTemplate_work01.Dao;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;@Component
public class BookDaoImpl implements BookDao{//注入JdbcTemplate模板实现数据库操作@Autowiredprivate JdbcTemplate jdbcTemplate;
}

二、实现数据库增删改操作

根据上述准备工作代码进行功能的添加

1.在接口中创建增删改三种方法

package spring03day.JdbcTemplate_work01.Dao;import spring03day.JdbcTemplate_work01.Book.Book;public interface BookDao {void add(Book book);void update(Book book);void delete(int id);
}

2.在接口实现类中实现功能

其中使用jdbcTemplate.update()作为实现sql语句的方法

package spring03day.JdbcTemplate_work01.Dao;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import spring03day.JdbcTemplate_work01.Book.Book;@Component
public class BookDaoImpl implements BookDao{//注入JdbcTemplate模板实现数据库操作@Autowiredprivate JdbcTemplate jdbcTemplate;//添加操作@Overridepublic void add(Book book) {//写入添加的sql语句,其中问号代表传入参数,几个问号代表传入几个参数String sql = "insert into t_book values(?,?,?)";//调用jdbcTemplate.update()方法进行数据库操作//update()方法中有两个参数,第一个是sql语句,第二个是写入sal语句中的参数//方法一://int update = jdbcTemplate.update(sql, book.getUserid(), book.getUsername(), book.getUserstatus());//方法二:使用数组存入所需参数,再传给updateObject[] args = {book.getUserid(), book.getUsername(), book.getUserstatus()};int update = jdbcTemplate.update(sql, args);System.out.println(update);}//修改操作@Overridepublic void update(Book book) {String sql = "update t_book set username=?,userstatus=? where userid=?";int update = jdbcTemplate.update(sql, book.getUsername(), book.getUserstatus(), book.getUserid());System.out.println(update);}//删除操作@Overridepublic void delete(int id) {String sql = "delete from t_book where userid=?";int update = jdbcTemplate.update(sql, id);System.out.println(update);}
}

3.在Service类中调用这些方法

package spring03day.JdbcTemplate_work01.Service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import spring03day.JdbcTemplate_work01.Book.Book;
import spring03day.JdbcTemplate_work01.Dao.BookDao;@Service
public class BookService {//注入BookDao实现类@Autowiredprivate BookDao bookDao;public void add(Book book){bookDao.add(book);}public void update(Book book){bookDao.update(book);}public void delete(int id){bookDao.delete(id);}
}

4.测试最终结果

package spring03day.JdbcTemplate_work01.test;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring03day.JdbcTemplate_work01.Book.Book;
import spring03day.JdbcTemplate_work01.Service.BookService;public class test {public static void main(String[] args) {new test().test_();}public void test_(){ApplicationContext context =new ClassPathXmlApplicationContext("spring03day/JdbcTemplate_work01/spring01jdbc.xml");BookService bookService = context.getBean("bookService", BookService.class);Book book = new Book();book.setUserid(1000);book.setUsername("凯特琳");book.setUserstatus("不响应");//修改//book.setUserstatus("响应");//实现添加bookService.add(book);//实现修改//bookService.update(book);//实现删除//bookService.delete(book.getUserid());}
}

三、数据库查询操作

在BookDaoImpl类中完成查询的操作

1.查询单个数据

使用jdbcTemplate.queryForObject()方法,可以获得单个数据

public int findCount() {//查询总条数的sql语句String sql = "select count(*) from t_book";//jdbcTemplate.queryForObject()方法//其中第一个参数是sql语句,第二个参数是返回值的类加载Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);return integer;}

2.查询单个对象

同样是使用jdbcTemplate.queryForObject()方法,但是传入参数与上不同

public Book findBookById(int id) {String sql = "select * from t_book where userid=?";//使用jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);//其中第一个参数是sql语句,第二个参数是返回类型,需要创建BeanPropertyRowMapper对象并填入需要返回的对象类型并加载,第三个参数是sql语句中的参数Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);return book;}

3.查询集合数据

使用jdbcTemplate.query()方法,内部参数与查询单个对象相同,该方法的返回值就是一个集合类,所以可以查询到数据库中的所有数据

public List<Book> findAllBook() {String sql = "select * from t_book";//要想返回集合类,那就得使用jdbcTemplate.query()方法,方法中参数同上List<Book> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));return query;}

四、数据库批量操作

1.批量添加功能

//批量添加//使用jdbcTemplate.batchUpdate方法,第一个参数是sql语句,第二个参数是要添加的参数的集合@Overridepublic void addMore(List<Object[]> batch) {String sql = "insert into t_book values(?,?,?)";int[] ints = jdbcTemplate.batchUpdate(sql,batch);}

在进行调用时需要传入参数

        List<Object[]> batchArgs = new ArrayList<>();Object[] o1 = {9,"java","a"};Object[] o2 = {10,"c++","b"};Object[] o3 = {11,"MySQL","c"};batchArgs.add(o1);batchArgs.add(o2);batchArgs.add(o3);bookService.addMore(batchArgs);

2.批量修改、删除功能

实现方法与批量添加相同

//批量修改@Overridepublic void updateMore(List<Object[]> batch) {String sql = "update t_book set username=?,userstatus=? where userid=?";int[] ints = jdbcTemplate.batchUpdate(sql, batch);}//批量删除@Overridepublic void deleteMore(List<Object[]> batch) {String sql = "delete from t_book where userid=?";jdbcTemplate.batchUpdate(sql,batch);}

Spring5框架day03之JdbcTemplate相关推荐

  1. 001 spring5框架:java类工程,IOC:实体类表示表关系,AOP,JdbcTemplate模板,事务操作,Spring5 框架新功能:日志,为空注解,函数式风格,juint,Webflux

    1. Spring5 框架(Spring5 Framework)介绍 1.1 概念 1.Spring 是轻量级的开源的 JavaEE 框架 2.Spring 可以解决企业应用开发的复杂性 3.Spri ...

  2. Spring5 框架

    Spring5 框架 一.Spring概述 Spring是轻量级的开源的JavaEE框架. Spring可以解决企业应用开发的复杂性. Spring有两个核心部分:IOC和AOP. IOC:控制反转, ...

  3. Java系列技术之Spring5框架-钟洪发-专题视频课程

    Java系列技术之Spring5框架-33人已学习 课程介绍         Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个 ...

  4. Spring5框架(上) IOC

    Spring5框架 IOC 前言 Spring框架概述 IOC容器 底层原理 Bean管理XML方式(创建对象和set注入属性) 注入集合类型属性1 IOC操作Bean管理 Bean管理(工厂Bean ...

  5. Spring5框架学习

    Spring5框架学习 备注:视频来源于尚硅谷 - Spring 5 框架最新版教程(idea版):https://www.bilibili.com/video/BV1Vf4y127N5 Spring ...

  6. Java总结:Spring5框架(1)

    Spring5框架(1) 一:什么是Spring? Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用 ...

  7. Spring5 框架新功能(Webflux)

    目录 1.SpringWebflux 介绍 2.响应式编程(Java 实现) 3.响应式编程(Reactor 实现) 1.SpringWebflux 介绍 (1)SpringWebflux 是 Spr ...

  8. Spring5框架-IOC容器

    Spring5框架 Spring包下载快照 一.Spring简绍 1什么是Spring 1.Spring是轻量级的开源的JAVAEE框架,可以解决企业应用开发的复杂性 2.Spring有两个核心的部分 ...

  9. Spring5 框架概述 、IOC 容器

    一.Spring5 框架概述 介绍 Spring 是轻量级的开源的 JavaEE 框架 Spring 可以解决企业应用开发的复杂性 Spring 有两个核心部分:IOC 和 Aop (1)IOC:控制 ...

最新文章

  1. 一周内咸鱼疯传2.4W次,最终被所有大厂封杀
  2. 中石油训练赛 - 姓氏(思维+水题)
  3. webstorm使用技巧
  4. python安装robotframework报错_robotframework-autoitlibrary离线安装
  5. 算法不归路之最大子序列(C++版)
  6. 374. Guess Number Higher or Lower
  7. StopWatch工具
  8. 如何用“向上管理”搞垮一个团队?
  9. 【分享】用东野圭吾的方式说爱你
  10. 汉字的动态编码与显示方案
  11. linux不能上网问题
  12. 在Sun新解决方案中心亲历虚拟化(多图)
  13. HTML网页设计结课作业~仿小米商城网站纯HTML模板源码(HTML+CSS)
  14. iis服务器mp4不显示,IIS浏览器无法读取mp4视频的解决方法
  15. 1156: 单数变复数
  16. Docker入门教程 Part 1 基础概念 - 镜像、容器、仓库
  17. Java入门 18 3\25
  18. networkx画中文节点 networkx画中文节点
  19. 难道天才都容易罹患精神疾病?还是西方医学不知道风邪所犯?
  20. Intel将推2GHz Atom Z550

热门文章

  1. codility Nesting
  2. 宝鲲财经:外汇实盘操作小技巧
  3. 基于springboot整合了mybatis plus,lombok,log4j2并实现了全局异常处理及统一数据返回格式(code,msg,data)
  4. 飞凌RK3399平台多媒体测试-RK3399 视频编解码及摄像头测试
  5. 如何做好技术演讲-口才提升篇章
  6. TomCat卸载之后重新装另一个版本的TomCat安装程序的进度条安装到三分之一显示安装失败!!!!!!!!
  7. 蓝桥杯 砝码称重【第十二届】【省赛】【B组】
  8. 今日头条2018秋招笔试题(二)合并重叠病句
  9. 【免费分享】简约大气的图片相册类织梦网站模板/DedeCMS自适应手机版图片图集网站源码下载
  10. 【最简单的python画折线图】半封装式代码画折线图,防止写重复代码