Spring5--JdbcTemplate
概述和准备工作
1、什么是 JdbcTemplate
Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
2、准备工作
(1)引入相关 jar 包
(2)在 spring 配置文件配置数据库连接池
1、在src
目录下创建jdbc.properties
prop.driverClass=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/user_db
prop.username=root
prop.password=123456
2、bean1.xml
中
<!--引入外部属性文件--><context:property-placeholder location="classpath:jdbc.properties"/><!--配置连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="driverClassName" value="${prop.driverClass}"/><property name="url" value="${prop.url}"/><property name="username" value="${prop.username}"/><property name="password" value="${prop.password}"/></bean>
(3)配置 JdbcTemplate 对象,注入 DataSource
bean1.xml
<!--JdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--注入dataSource--><property name="dataSource" ref="dataSource"/></bean>
(4)创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
1、开启组件扫描,bean1.xml
完整配置如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"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.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!--开启组件扫描--><context:component-scan base-package="com.spring5"/><!--引入外部属性文件--><context:property-placeholder location="classpath:jdbc.properties"/><!--配置连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="driverClassName" value="${prop.driverClass}"/><property name="url" value="${prop.url}"/><property name="username" value="${prop.username}"/><property name="password" value="${prop.password}"/></bean><!--JdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--注入dataSource--><property name="dataSource" ref="dataSource"/></bean>
</beans>
2、编写service
层和dao
层
package com.spring5.service;import com.spring5.dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {// 注入dao@Autowiredprivate BookDao bookDao;
}
package com.spring5.dao;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {// 注入JdbcTemplate@Autowiredprivate JdbcTemplate jdbcTemplate;
}
JdbcTemplate 操作数据库
添加
1、对应数据库创建实体类
package com.spring5.entity;public class Book {private int bid;private String bname;private String bstatus;public Book() {}public Book(int bid, String bname, String bstatus) {this.bid = bid;this.bname = bname;this.bstatus = bstatus;}public int getBid() {return bid;}public String getBname() {return bname;}public String getBstatus() {return bstatus;}public void setBid(int bid) {this.bid = bid;}public void setBname(String bname) {this.bname = bname;}public void setBstatus(String bstatus) {this.bstatus = bstatus;}
}
2、编写 service 和 dao
(1)在 dao 进行数据库添加操作
(2)调用 JdbcTemplate 对象里面 update 方法实现添加操作
package com.spring5.dao;import com.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {// 注入JdbcTemplate@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic int add(Book book) {// 创建sql语句String sql = "insert into book values(?,?,?)";int row = jdbcTemplate.update(sql, book.getBid(), book.getBname(), book.getBstatus());return row;}
}
package com.spring5.service;import com.spring5.dao.BookDao;
import com.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {// 注入dao@Autowiredprivate BookDao bookDao;//添加的方法public void addBook(Book book) {int row = bookDao.add(book);System.out.println(row);}
}
3、测试类
package com.spring5.test;import com.spring5.entity.Book;
import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);bookService.addBook(new Book(101, "大主宰", "完结"));}
}
4、运行结果
5、数据库查看
修改和删除
BookDaoImpl
类
package com.spring5.dao;import com.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {// 注入JdbcTemplate@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic int add(Book book) {// 创建sql语句String sql = "insert into book values(?,?,?)";return jdbcTemplate.update(sql, book.getBid(), book.getBname(), book.getBstatus());}@Overridepublic int update(Book book) {String sql = "update book set bname=?,bstatus=? where bid=?";return jdbcTemplate.update(sql, book.getBname(), book.getBstatus(), book.getBid());}@Overridepublic int delete(int bid) {String sql = "delete from book where bid=?";return jdbcTemplate.update(sql, bid);}}
BookService
类
package com.spring5.service;import com.spring5.dao.BookDao;
import com.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {// 注入dao@Autowiredprivate BookDao bookDao;//添加的方法public void addBook(Book book) {int row = bookDao.add(book);System.out.println(row);}//修改的方法public void updateBook(Book book) {int row = bookDao.update(book);System.out.println(row);}//删除的方法public void deleteBook(int bid) {int row = bookDao.delete(bid);System.out.println(row);}
}
测试
修改
package com.spring5.test;import com.spring5.entity.Book;
import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));bookService.updateBook(new Book(101, "圣墟", "连载"));}
}
删除
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));//bookService.updateBook(new Book(101, "圣墟", "连载"));bookService.deleteBook(101);}
}
查询
查询返回某个值
第一个参数:sql 语句;第二个参数:返回类型 Class
第一个参数:sql 语句;第二个参数:sql 语句?参数值;第三个参数:返回类型 Class
往BookDao
接口新增一个int count();
方法,在BookDaoImpl
中重写该方法:
@Overridepublic int count() {String sql = "select count(*) from book";return jdbcTemplate.queryForObject(sql, Integer.class);}
若带参数,修改如下;
String[] args = {...}; return jdbcTemplate.queryForObject(sql, args, Integer.class);
在BookService
新增方法:
//查询表中记录数public void findCount() {int count = bookDao.count();System.out.println(count);}
手动在数据库添加3条记录
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));//bookService.updateBook(new Book(101, "圣墟", "连载"));//bookService.deleteBook(101);bookService.findCount();}
}
运行结果:
查询返回对象
第一个参数:sql 语句
第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成 数据封装
第三个参数:sql 语句?参数值
往BookDao
接口新增一个Book findBookById(int bid);
方法,在BookDaoImpl
中重写该方法:
@Overridepublic Book findBookById(int bid) {String sql = "select * from book where bid=?";return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), bid);}
在BookService
新增方法:
//查询返回对象public void findBookbyId(int bid) {Book book = bookDao.findBookById(bid);System.out.println(book);}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));//bookService.updateBook(new Book(101, "圣墟", "连载"));//bookService.deleteBook(101);//bookService.findCount();bookService.findBookbyId(101);}
}
运行结果:
查询返回集合
往BookDao
接口新增一个List<Book> findAll();
方法,在BookDaoImpl
中重写该方法:
@Overridepublic List<Book> findAll() {String sql = "select * from book";return jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));}
在BookService
新增方法:
//查询返回集合public void findBookAll() {List<Book> bookList = bookDao.findAll();System.out.println(bookList);}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));//bookService.updateBook(new Book(101, "圣墟", "连载"));//bookService.deleteBook(101);//bookService.findCount();//bookService.findBookbyId(101);bookService.findBookAll();}
}
运行结果:
批量操作
操作表里面多条记录
添加
第一个参数:sql 语句
第二个参数:List 集合,添加多条记录数据
往BookDao
接口新增一个int[] batchAdd(List<Object[]> list);
方法,在BookDaoImpl
中重写该方法:
@Overridepublic int[] batchAdd(List<Object[]> list) {String sql = "insert into book values(?,?,?)";return jdbcTemplate.batchUpdate(sql, list); // 返回影响行数}
在BookService
新增方法:
//批量添加public void batchAddBook(List<Object[]> list) {int[] rows = bookDao.batchAdd(list);System.out.println(Arrays.toString(rows));}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);// 批量添加List<Object[]> list = new ArrayList<>();Object[] o1 = {104, "完美世界", "完结"};Object[] o2 = {105, "冰火魔厨", "完结"};Object[] o3 = {106, "斗罗大陆", "完结"};list.add(o1);list.add(o2);list.add(o3);bookService.batchAddBook(list);}
}
运行结果:
查看数据库:
修改
往BookDao
接口新增一个int[] batchUpdate(List<Object[]> list);
方法,在BookDaoImpl
中重写该方法:
@Overridepublic int[] batchUpdate(List<Object[]> list) {String sql = "update book set bname=?,bstatus=? where bid=?";return jdbcTemplate.batchUpdate(sql, list); // 返回影响行数}
在BookService
新增方法:
//批量修改public void batchUpdateBook(List<Object[]> list) {int[] rows = bookDao.batchUpdate(list);System.out.println(Arrays.toString(rows));}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);// 批量修改List<Object[]> list = new ArrayList<>();Object[] o1 = {"星门", "完结", 104}; // 根据sql语句参数位置来Object[] o2 = {"超凡世界", "完结", 105};Object[] o3 = {"遮天", "完结", 106};list.add(o1);list.add(o2);list.add(o3);bookService.batchUpdateBook(list);}
}
运行结果:
查看数据库:
删除
往BookDao
接口新增一个int[] batchDelete(List<Object[]> list);
方法,在BookDaoImpl
中重写该方法:
@Overridepublic int[] batchDelete(List<Object[]> list) {String sql = "delete from book where bid=?";return jdbcTemplate.batchUpdate(sql, list); // 返回影响行数}
在BookService
新增方法:
//批量删除public void batchDeleteBook(List<Object[]> list) {int[] rows = bookDao.batchDelete(list);System.out.println(Arrays.toString(rows));}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);// 批量删除List<Object[]> list = new ArrayList<>();Object[] o1 = {104}; Object[] o2 = {105};list.add(o1);list.add(o2);bookService.batchDeleteBook(list);}
}
运行结果:
查看数据库:
Spring5--JdbcTemplate相关推荐
- spring5 jdbcTemplate
1.Jdbc Template概述 Spring框架对JDBC进行封装,使用Jdbc Template方便实现对数据库操作 2.案例演示 2.1 准备工作 (1)向lib引入相关jar包(Maven搞 ...
- Java之Spring5:JDBCTemplate
JDBCTemplate 什么是JDBCTemplate 准备工作 添加操作 修改和删除操作 查询操作 返回某个值 返回对象 返回集合 批量添加 批量修改和删除 完整代码 什么是JDBCTemplat ...
- Spring5——JdbcTemplate
一.什么是JdbcTemplate Spring对Jdbc进行封装,可以方便实现对数据库的操作. 二.操作数据库 2.1 添加 利用sevice调用,sevice中通过@Autowired注入dao, ...
- java day60【 Spring 中的 JdbcTemplate[会用] 、Spring 中的事务控制 、Spring5 的新特性[了解] 】...
第1章 Spring 中的 JdbcTemplate[会用] 1.1JdbcTemplate 概述 1.2JdbcTemplate 对象的创建 1.3spring 中配置数据源 1.3.1 环境搭建 ...
- Spring5使用JDBCTemplate批处理添加数据时提示SQL语法有错
目录 问题描述 解决方案 问题描述 今天在使用Spring5框架时,用JDBCTemplate技术来操作数据库,一开始增删改查都好好的,后来使用jdbcTemplate.batchUpdate()进行 ...
- 001 spring5框架:java类工程,IOC:实体类表示表关系,AOP,JdbcTemplate模板,事务操作,Spring5 框架新功能:日志,为空注解,函数式风格,juint,Webflux
1. Spring5 框架(Spring5 Framework)介绍 1.1 概念 1.Spring 是轻量级的开源的 JavaEE 框架 2.Spring 可以解决企业应用开发的复杂性 3.Spri ...
- Spring5学习笔记------4、JdbcTemplate
JdbcTemplate(概念) 1.Spring框架对JDBC进行了封装,使用JdbcTemplate方便实现对数据库的操作 2.JdbcTemplate操作实现 (1)引入jar包 (2)在Spr ...
- Spring5框架基础详解(五)(JdbcTemplate概念和准备、jdbcTemplate操作数据库添加功能、修改和删除功能、查询功能)
文章目录 一.JdbcTemplate是什么和准备工作 1.1.引入相关maven依赖 1.2在spring配置文件配置数据库连接 1.3配置JdbcTemplate对象,注入DateSource 1 ...
- Spring5 学习总结—JdbcTemplate,事务管理
JdbcTemplate(概念和准备) 1.什么是JdbcTemplate 1.1 Spring框架对JDBC进行封装,使用 JdbcTemplate ...
- Spring5框架day03之JdbcTemplate
一.JdbcTemplate准备工作 1.要使用JdbcTemplate就要先引入所需jar包 2.在xml文件中配置数据库资源,JdbcTemplate模板 <?xml version=&qu ...
最新文章
- Linux命令screen—终端切换,工作环境保存,画面同步,防断网
- Python从菜鸟到高手(4):导入Python模块
- androidstuido_schooltest_6_media_service
- linux 命令/目录 名称 英文单词 缩写 助记
- 前端学习(2732):重读vue电商网站42之添加富文本编辑器
- 赠送300家门店260亿销售额的零售企业Power BI实战示例数据
- realvnc 6 教程 linux,CentOS 6下VNC的安装与配置
- Python之路【第十五篇】:Web框架
- python愿意_我的第一个Python程序!有人愿意复习一下帮助我改进吗?
- smarty capture使用
- 黑马程序员 python 数据分析 代码_2020年最新版 5.0程序员 黑马python人工智能数据分析机器学习软件测试全栈开发...
- IO、NIO和AIO的区别
- 笔记-Tukey Method发现outliers(离群点)
- 曲苑杂坛--DML操作中如何处理那些未提交的数据
- Justinmind教程(3)——管理原型
- 每日总结-05-23
- Joel Spolsky在耶鲁大学的演讲(下)
- 移动硬盘格式化(pc和mac共用)-菜鸟级解决方案[转]
- uniApp和微信小程序好看的我的页面(有源码)
- 信息网络安全模拟题----软考高项的走过来