项目开始前需要创建数据库和数据表,本案例用的mysql8.0以上版本
#创建数据库
CREATE database userdb;
#创建数据表
CREATE TABLE userdb.`book` (
`userId` varchar(50) NOT NULL,
`username` varchar(50) NULL DEFAULT NULL,
`ustatus` varchar(50) NULL DEFAULT NULL
);
项目需要用到如下依赖
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
commons-logging-1.2.jar
druid-1.2.14.jar
mysql-connector-java-8.0.19.jar
spring-aop-5.2.6.RELEASE.jar
spring-aspects-5.2.6.RELEASE.jar
spring-beans-5.2.6.RELEASE.jar
spring-context-5.2.6.RELEASE.jar
spring-core-5.2.6.RELEASE.jar
spring-expression-5.2.6.RELEASE.jar
spring-jdbc-5.2.6.RELEASE.jar
spring-tx-5.2.6.RELEASE.jar
项目整体结构
XML配置文件beans.xml(在src目录下)
<?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"
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">
<!--开启组件扫描-->
<context:component-scan base-package="com.mt.spring.jdbctemplate"></context:component-scan>
<!--数据库连接池配置-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/userdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false"></property>
<property name="username" value="root"></property>
<property name="password" value="sa1234"></property>
</bean>
<!-- 创建JdbcTemplate对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入数据源-->
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
数据对象Book
package com.mt.spring.jdbctemplate.entity;
public class Book {
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;
}
@Override
public String toString() {
return "Book{" +
"userId='" + userId + '\'' +
", username='" + username + '\'' +
", ustatus='" + ustatus + '\'' +
'}';
}
}
数据操作层接口BookDao
package com.mt.spring.jdbctemplate.dao;
import com.mt.spring.jdbctemplate.entity.Book;
import java.util.List;
public interface BookDao {
public void add(Book book);
public void update(Book book);
public void delete(String id);
public int findCount();
public Book findBook(String id);
public List<Book> findAllBook();
public void batchAdd(List<Object[]> books);
public void batchupdate(List<Object[]> books);
public void batchdelete(List<Object[]> books);
}
数据操作层实现类BookDaoImpl
package com.mt.spring.jdbctemplate.dao;
import com.mt.spring.jdbctemplate.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(value = "r1")
public class BookDaoImpl implements BookDao{
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(Book book) {//怎加
String sql = "insert into book(userId,username,ustatus)values (?,?,?)";
int update = jdbcTemplate.update(sql,book.getUserId(),book.getUsername(),book.getUstatus());
System.out.println(update);
}
@Override
public void update(Book book) {//修改
String sql = "update book set username=?,ustatus=? where userId=?";
int update = jdbcTemplate.update(sql,book.getUsername(),book.getUstatus(),book.getUserId());
System.out.println(update);
}
@Override
public void delete(String id) {//删除
String sql = "delete from book where userId = ?";
int update = jdbcTemplate.update(sql,id);
System.out.println(update);
}
@Override
public int findCount() {//查询简单类型数据
String sql = "select count(*) from book";
Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
return count;
}
@Override
public Book findBook(String id) {//查询单个对象数据
String sql = "select userId,username,ustatus from book where userId=?";
Object[] args = {id};
Book book = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class),args);
return book;
}
@Override
public List<Book> findAllBook() {//查询多个对象数据
String sql = "select userId,username,ustatus from book";
List<Book> books= jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class));
return books;
}
@Override
public void batchAdd(List<Object[]> books) {//批量增加多个对象数据
String sql = "insert into book(userId,username,ustatus)values (?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql,books);
System.out.println(ints);
}
@Override
public void batchupdate(List<Object[]> books) {//批量更新多个对象数据
String sql = "update book set username=?,ustatus=? where userId=?";
int[] ints = jdbcTemplate.batchUpdate(sql,books);
System.out.println(ints);
}
@Override
public void batchdelete(List<Object[]> books) {//批量删除
String sql = "delete from book where userId = ?";
int[] ints = jdbcTemplate.batchUpdate(sql,books);
System.out.println(ints);
}
}
业务层BookService
package com.mt.spring.jdbctemplate.service;
import com.mt.spring.jdbctemplate.dao.BookDao;
import com.mt.spring.jdbctemplate.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
@Autowired
@Qualifier(value = "r1")
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 findBookCount(){
return bookDao.findCount();
}
public Book findBook(String id){
return bookDao.findBook(id);
}
public List<Book> findAllBook(){
return bookDao.findAllBook();
}
public void batchAddBook(List<Object[]> args){
bookDao.batchAdd(args);
}
public void batchUpdateBook(List<Object[]> args){
bookDao.batchupdate(args);
}
public void batchDeleteBook(List<Object[]> args){
bookDao.batchdelete(args);
}
}
测试类
package com.mt.spring;
import com.mt.spring.jdbctemplate.entity.Book;
import com.mt.spring.jdbctemplate.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
BookService bookService = context.getBean("bookService",BookService.class);
//新增
// Book book = new Book();
// book.setUserId("10000002");
// book.setUsername("李四");
// book.setUstatus("玩耍中");
// bookService.addBook(book);
//修改
// Book book = new Book();
// book.setUserId("10000002");
// book.setUsername("张三");
// bookService.updateBook(book);
//删除
// bookService.deleteBook("10000002");
//查询简单类型数据
// System.out.println("一共又多少本书:"+bookService.findBookCount());
//查询单个对象数据(要保证数据库只能查出一个对象)
System.out.println(bookService.findBook("10000002"));
//查询对象list
// System.out.println(bookService.findAllBook());
// //批量添加
// List<Object[]> lists = new ArrayList<>();
// Object[] o1 = {"1","JAVA","A"};
// Object[] o2 = {"2","c","A"};
// Object[] o3 = {"3","c++","A"};
// Object[] o4 = {"4","sql","A"};
// lists.add(o1);
// lists.add(o2);
// lists.add(o3);
// lists.add(o4);
// bookService.batchAddBook(lists);
//批量修改
// List<Object[]> lists = new ArrayList<>();
// Object[] o1 = {"11sdfJAVA","A","1"};
// Object[] o2 = {"22c","b","2"};
// Object[] o3 = {"333c++","c","3"};
// Object[] o4 = {"44sql","d","4"};
// lists.add(o1);
// lists.add(o2);
// lists.add(o3);
// lists.add(o4);
// bookService.batchUpdateBook(lists);
//批量删除
// List<Object[]> lists = new ArrayList<>();
// Object[] o1 = {"1"};
// Object[] o2 = {"2"};
// Object[] o3 = {"3"};
// Object[] o4 = {"4"};
// lists.add(o1);
// lists.add(o2);
// lists.add(o3);
// lists.add(o4);
// bookService.batchDeleteBook(lists);
}
}