Spring中的JdbcTemplate操作
阿新 • • 發佈:2021-08-31
Spring框架對JDBC進行封裝,使用JdbcTemplate可以方便的實現對資料庫操作。
準備工作
(1)匯入相關的jar包
(2)配置檔案如下
<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <context:component-scan base-package="com.lalala"></context:component-scan> <!--資料庫連線池--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="jdbc:mysql:///springtest" /> <property name="username" value="root" /> <property name="password" value="123456" /> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> </bean> <!--JdbcTemplate物件--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!--注入 dataSource--> <property name="dataSource" ref="dataSource"></property> </bean> </beans>
(3)建立 dao 和service 類,在 dao 中注入JdbcTemplate物件
service中注入dao
JdbcTemplate操作資料庫(新增)
新建資料庫:springtest,並建立表 t_book
新建實體類 Book
package com.lalala.spring5.entity; public class Book { private String bookId; private String bookname; private String bookstatus; public String getBookId() { return bookId; } public String getBookname() { return bookname; } public String getBookstatus() { return bookstatus; } public void setBookId(String bookId) { this.bookId = bookId; } public void setBookname(String bookname) { this.bookname = bookname; } public void setBookstatus(String bookstatus) { this.bookstatus = bookstatus; } }
BookService中新增addBook方法
@Service
public class BookService {
//注入dao
@Autowired
BookDao bookDao;
//新增的方法
public void addBook(Book book){
bookDao.add(book);
}
}
BookDao介面如下
package com.lalala.spring5.dao; import com.lalala.spring5.entity.Book; public interface BookDao { void add(Book book); }
BookDaoImpl如下
package com.lalala.spring5.dao;
import com.lalala.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
@Autowired
private JdbcTemplate jdbcTemplate;
//新增的方法
@Override
public void add(Book book) {
//建立sql語句
String sql = "insert into t_book values(?,?,?)";
//呼叫方法實現
int update = jdbcTemplate.update(sql, book.getBookId(), book.getBookname(), book.getBookstatus());
System.out.println(update);
}
}
通過檢視資料表 t_book,可以看到新增加了一條資料
JdbcTemplate操作資料庫(修改和刪除)
bookService中如下
package com.lalala.spring5.service;
import com.lalala.spring5.dao.BookDao;
import com.lalala.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BookService {
//注入dao
@Autowired
BookDao bookDao;
//新增的方法
public void addBook(Book book){
bookDao.add(book);
}
//修改的方法
public void updateBook(Book book){
bookDao.updateBook(book);
}
//修改的方法
public void deleteBook(String id){
bookDao.delete(id);
}
}
BookDao如下
package com.lalala.spring5.dao;
import com.lalala.spring5.entity.Book;
public interface BookDao {
void add(Book book);
void updateBook(Book book);
void delete(String id);
}
BookDaoImpl如下
package com.lalala.spring5.dao;
import com.lalala.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
@Autowired
private JdbcTemplate jdbcTemplate;
//新增的方法
@Override
public void add(Book book) {
//建立sql語句
String sql = "insert into t_book values(?,?,?)";
//呼叫方法實現
int update = jdbcTemplate.update(sql, book.getBookId(), book.getBookname(), book.getBookstatus());
System.out.println(update);
}
//修改
@Override
public void updateBook(Book book) {
String sql = "update t_book set bookname=?,bookstatus=? where book_id=?";
Object[] args = {book.getBookname(), book.getBookstatus(),book.getBookId()};
int update = jdbcTemplate.update(sql, args);
System.out.println(update);
}
//刪除
@Override
public void delete(String id) {
String sql = "delete from t_book where book_id=?";
int update = jdbcTemplate.update(sql, id);
System.out.println(update);
}
}
測試程式碼如下
package com.lalala.spring5.test;
import com.lalala.spring5.entity.Book;
import com.lalala.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestBook {
@Test
public void testJdbcTemplate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
//新增
//Book book = new Book();
//book.setBookId("1");
//book.setBookname("java");
//book.setBookstatus("a");
//bookService.addBook(book);
//修改
//Book book = new Book();
//book.setBookId("1");
//book.setBookname("javajava");
//book.setBookstatus("b");
//bookService.updateBook(book);
bookService.deleteBook("1");
}
}
JdbcTemplate操作資料庫(查詢返回某個值)
BookService
package com.lalala.spring5.service;
import com.lalala.spring5.dao.BookDao;
import com.lalala.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BookService {
//注入dao
@Autowired
BookDao bookDao;
//查詢表中記錄數
public int findCount(){
return bookDao.selectCount();
}
}
BookDao
package com.lalala.spring5.dao;
import com.lalala.spring5.entity.Book;
public interface BookDao {
int selectCount();
}
BookDaoImpl
package com.lalala.spring5.dao;
import com.lalala.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
@Autowired
private JdbcTemplate jdbcTemplate;
//查詢記錄數
@Override
public int selectCount() {
String sql = "select count(*) from t_book";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
}
測試程式碼
package com.lalala.spring5.test;
import com.lalala.spring5.entity.Book;
import com.lalala.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestBook {
@Test
public void testJdbcTemplate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
int count = bookService.findCount();
System.out.println(count);
}
}
JdbcTemplate操作資料庫(查詢返回物件)
BookService如下
package com.lalala.spring5.service;
import com.lalala.spring5.dao.BookDao;
import com.lalala.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BookService {
//注入dao
@Autowired
BookDao bookDao;
//查詢返回物件
public Book findOne(String id){
return bookDao.findBookInfo(id);
}
}
BookDao如下
package com.lalala.spring5.dao;
import com.lalala.spring5.entity.Book;
public interface BookDao {
Book findBookInfo(String id);
}
BookDaoImpl如下
package com.lalala.spring5.dao;
import com.lalala.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class BookDaoImpl implements BookDao{
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public Book findBookInfo(String id) {
String sql = "select * from t_book where book_id=?";
/**
* 三個引數
* 第一個引數:sql語句
* 第二個引數:RowMapper 是介面,針對返回不同型別資料,使用這個接口裡面實現類完成資料封裝
* 第三個引數:sql語句值
*/
//呼叫方法
Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
return book;
}
}
測試程式碼如下
package com.lalala.spring5.test;
import com.lalala.spring5.entity.Book;
import com.lalala.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestBook {
@Test
public void testJdbcTemplate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
Book book = bookService.findOne("1");
System.out.println(book);
}
}
JdbcTemplate操作資料庫(查詢返回集合)
BookService如下
package com.lalala.spring5.service;
import com.lalala.spring5.dao.BookDao;
import com.lalala.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
//注入dao
@Autowired
BookDao bookDao;
//查詢返回集合
public List<Book> findAll(){
return bookDao.findAllBook();
}
}
BookDao如下
package com.lalala.spring5.dao;
import com.lalala.spring5.entity.Book;
import java.util.List;
public interface BookDao {
List<Book> findAllBook();
}
BookDaoImpl如下
package com.lalala.spring5.dao;
import com.lalala.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class BookDaoImpl implements BookDao{
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<Book> findAllBook() {
String sql = "select * from t_book";
//呼叫方法
List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return bookList;
}
}
測試程式碼如下
package com.lalala.spring5.test;
import com.lalala.spring5.entity.Book;
import com.lalala.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
public class TestBook {
@Test
public void testJdbcTemplate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Book> all = bookService.findAll();
System.out.println(all);
}
}
JdbcTemplate操作資料庫(批量新增操作)
批量操作:操作表裡面多條記錄
BookService中如下
package com.lalala.spring5.service;
import com.lalala.spring5.dao.BookDao;
import com.lalala.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
//注入dao
@Autowired
BookDao bookDao;
//批量新增
public void batchAdd(List<Object[]> batchArgs ){
bookDao.batchAddBook(batchArgs);
}
}
BookDao如下
package com.lalala.spring5.dao;
import java.util.List;
public interface BookDao {
void batchAddBook(List<Object[]> batchArgs);
}
BookDaoImpl如下
package com.lalala.spring5.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.Arrays;
import java.util.List;
@Repository
public class BookDaoImpl implements BookDao {
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
//批量新增
@Override
public void batchAddBook(List<Object[]> batchArgs) {
String sql = "insert into t_book values(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
}
測試方法如下
package com.lalala.spring5.test;
import com.lalala.spring5.entity.Book;
import com.lalala.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 {
@Test
public void testJdbcTemplate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
//批量新增測試
List<Object[]> batchArgs = new ArrayList<>();
Object[] o1 = {"3","java","a"};
Object[] o2 = {"4","c++","b"};
Object[] o3 = {"5","MySQL","c"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
//呼叫批量新增方法
bookService.batchAdd(batchArgs);
}
}
JdbcTemplate操作資料庫(批量修改操作)
BookService
package com.lalala.spring5.service;
import com.lalala.spring5.dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
//注入dao
@Autowired
BookDao bookDao;
//批量修改
public void batchUpdate(List<Object[]> batchArgs ){
bookDao.batchUpdateBook(batchArgs);
}
}
BookDao如下
package com.lalala.spring5.dao;
import java.util.List;
public interface BookDao {
//批量修改
void batchUpdateBook(List<Object[]> batchArgs);
}
BookDaoImpl如下
package com.lalala.spring5.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.Arrays;
import java.util.List;
@Repository
public class BookDaoImpl implements BookDao {
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
//批量修改
@Override
public void batchUpdateBook(List<Object[]> batchArgs) {
String sql = "update t_book set bookname=?,bookstatus=? where book_id=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
}
測試程式碼如下
package com.lalala.spring5.test;
import com.lalala.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 {
@Test
public void testJdbcTemplate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
//批量修改
List<Object[]> batchArgs = new ArrayList<>();
Object[] o1 = {"java123","a1","3"};
Object[] o2 = {"c++456","b1","4"};
Object[] o3 = {"MySQL789","c1","5"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
//呼叫批量修改的方法
bookService.batchUpdate(batchArgs);
}
}
JdbcTemplate操作資料庫(批量刪除操作)
BookService如下
package com.lalala.spring5.service;
import com.lalala.spring5.dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
//注入dao
@Autowired
BookDao bookDao;
//批量刪除
public void batchDelete(List<Object[]> batchArgs ){
bookDao.batchDeleteBook(batchArgs);
}
}
BookDao如下
package com.lalala.spring5.dao;
import java.util.List;
public interface BookDao {
//批量刪除
void batchDeleteBook(List<Object[]> batchArgs);
}
BookDaoImpl如下
package com.lalala.spring5.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.Arrays;
import java.util.List;
@Repository
public class BookDaoImpl implements BookDao {
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
String sql = "delete from t_book where book_id=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
}
測試程式碼如下
package com.lalala.spring5.test;
import com.lalala.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 {
@Test
public void testJdbcTemplate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
//批量修改
List<Object[]> batchArgs = new ArrayList<>();
Object[] o1 = {"3"};
Object[] o2 = {"4"};
batchArgs.add(o1);
batchArgs.add(o2);
//呼叫批量刪除的方法
bookService.batchDelete(batchArgs);
}
}