Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
相关jar包:
Dao层写个接口和实现类就行
Service层写业务层具体实现操作
还有测试类test的实现
在注解文件中得开启组件扫描,创建jdbcTemplate对象,并注入dataSoruce。
具体如下:
<?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.yang"></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="root"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
</bean>
<!-- 创建jdbctemplate对象-->
<bean id ="jdbcTempalte" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入datasource-->
<property name="dataSource" ref="dataSource"></property>
</bean>
Dao层:
接口BookDao代码:
package com.yang.dao;
import com.yang.entity.Book;
import java.util.List;
public interface BookDao {
void add(Book book);
void update(Book book);
void delete(String id);
int selectCount();
//查询返回对象
Book findBookInfo(String id);
//查询返回集合
List<Book> findAllBook();
// 批量添加数据
void batchAddBook(List<Object[]> batchArgs);
//批量修改数据
void batchUpdateBook(List<Object[]> batchArgs);
// 批量删除数据
void bacthDeleteBook(List<Object[]> batcArgs) ;
}
实现类代码:
package com.yang.dao;
import com.yang.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.Arrays;
import java.util.List;
@Repository
public class BookDaoImpl implements BookDao{
// 注入jdbctemplate
@Autowired
private JdbcTemplate jdbcTemplate;
//添加的方法
@Override
public void add(Book book) {
String sql ="insert into t_book values(?,?,?)";
Object[] args={book.getUserId(),book.getUsername(),book.getUstatus()};
int update = jdbcTemplate.update(sql,args);
System.out.println(update);
}
//修改的方法
@Override
public void update(Book book) {
String sql = "update t_book set username=?,ustatus=?where user_id=?";
Object[] args = {book.getUsername(),book.getUstatus(),book.getUserId()};
int update = jdbcTemplate.update(sql, args);
System.out.println(update);
}
//删除的方法
@Override
public void delete(String id) {
String sql="delete from t_book where user_id=?";
int update = jdbcTemplate.update(sql, id);
System.out.println(update);
}
//查询记录数
@Override
public int selectCount() {
String sql =" select count(*) from t_book";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
//查询返回对象
@Override
public Book findBookInfo(String id) {
String sql= "select * from t_book where user_id=?";
Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
return book;
}
@Override
public List<Book> findAllBook() {
String sql = "select * from t_book";
List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return bookList;
}
//批量添加数据
@Override
public void batchAddBook(List<Object[]> batchArgs) {
String sql= "insert into t_book value(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
//批量修改操作
@Override
public void batchUpdateBook(List<Object[]> batchArgs) {
String sql= "update t_book set username=?,ustatus=? where user_id=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
//批量删除操作
@Override
public void bacthDeleteBook(List<Object[]> batcArgs) {
String sql = " delete from t_book where user_id=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batcArgs);
System.out.println(Arrays.toString(ints));
}
}
entity报下创建book类定义book类属性
package com.yang.entity;
public class Book {
@Override
public String toString() {
return "Book{" +
"userId='" + userId + '\'' +
", username='" + username + '\'' +
", ustatus='" + ustatus + '\'' +
'}';
}
private String userId;
private String username ;
private String ustatus;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUstatus() {
return ustatus;
}
public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}
}
Service 包下 具体service业务实现
package com.yang.service;
import com.yang.dao.BookDao;
import com.yang.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
// 注入dao
@Autowired
private BookDao bookDao;
public void addBook( Book book){
bookDao.add(book);
}
// 修改方法
public void updateBook(Book book)
{
bookDao.update(book);
}
// 删除方法
public void deleteBook(String id)
{
bookDao.delete(id);
}
//查询表中的记录数
public int findcount()
{
return bookDao.selectCount();
}
// 查询返回对象
public Book findOne( String id){
return bookDao.findBookInfo(id);
}
// 查询返回集合
public List<Book> findAll(){
return bookDao.findAllBook();
}
// 批量添加
public void batchAdd(List<Object[]> batchArgs){
bookDao.batchAddBook(batchArgs);
}
// 批量修改
public void batchUpdateBook(List<Object[]> batchArgs)
{
bookDao.batchUpdateBook(batchArgs);
}
// 批量删除
public void batchDeleteBook(List<Object[]> batchArgs)
{
bookDao.bacthDeleteBook(batchArgs);
}
}
测试包Test下test实现类:
package com.yang.test;
import com.yang.entity.Book;
import com.yang.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("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
// Book book =new Book();
// book.setUserId("1");
// book.setUsername("java");
// book.setUstatus("true");
// book.setUsername("java update");
// book.setUstatus("true update");
bookService.addBook(book);
// bookService.updateBook(book);
// bookService.deleteBook("1");
// int count = bookService.findcount();
// System.out.println(count);
// 查询返回对象
// Book one = bookService.findOne("1");
// System.out.println(one);
// 查询返回集合对象
// List<Book> bookList = bookService.findAll();
// System.out.println(bookList);
// List<Object[]> batchArgs = new ArrayList<>();
// Object[] o1 ={"3","java","a"};
// Object []o2 ={"4","C++","b"};
// Object[] o3 ={"5","c","c"};
// batchArgs.add(o1);
// batchArgs.add(o2);
// batchArgs.add(o3);
// bookService.batchAdd(batchArgs);
// List<Object[]> batchArgs= new ArrayList<>();
// Object[] o1 ={"java001","a3","3"};
// Object []o2 ={"C++001","b4","4"};
// Object[] o3 ={"Mysql002","c5","5"};
// batchArgs.add(o1);
// batchArgs.add(o2);
// batchArgs.add(o3);
// bookService.batchUpdateBook(batchArgs);
List<Object[]> batchArgs= new ArrayList<>();
Object[] o1 ={"3"};
Object []o2 ={"4"};
Object[] o3 ={"5"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
bookService.batchDeleteBook(batchArgs);
}
}
总体收获:Spring5框架中封装的jdbcTemplate 真好用