一、JdbcTemplate 概念
1、什么是 JdbcTemplate
Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作。
2、准备工作
(1)引入相关依赖
mysql、jdbc、orm、tx、druid
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Spring5_demo01</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>6</source>
<target>6</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<org.springframework.version>5.2.6.RELEASE</org.springframework.version>
</properties>
<dependencies>
<!-- Spring依赖 -->
<!-- 1.Spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 2.Spring dao依赖 -->
<!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 3.Spring web依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>compile</scope>
</dependency>
<!-- 5.Druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- 6.注解 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 7.AspectJ -->
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjtools -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.4</version>
</dependency>
<!-- 8.Mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
</dependencies>
</project>
(2)在 Spring 配置文件配置数据库连接池
serverTimezone=UTC
防止时区问题
<!-- 配置Druid连接池 -->
<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/Springsgg?serverTimezone=UTC"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
(3)配置 JdbcTemplate 对象,注入 DataSource
<!-- JdbcTemplate 对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入dataSource -->
<property name="dataSource" ref="dataSource"></property>
</bean>
(4)创建 service 类、dao 类,在 dao 注入 JdbcTemplate 对象。
① 配置文件中开启组件扫描
<!-- 开启组件扫描 -->
<context:component-scan base-package="com.spring5"></context:component-scan>
② 创建类和接口
Bookservice
@Service
public class BookService {
@Autowired
private BookDao bookDao;
}
BookDao
public interface BookDao {
}
BookDaoImpl
@Repository
public class BookDaoImpl implements BookDao{
@Autowired
private JdbcTemplate jdbcTemplate;
}
二、JdbcTemplate 操作数据库
1、增、删、改
(1)对应数据库表创建实体类
public class Book {
private String userId;
private String username;
private String ustatus;
public void setUserId(String userId) {
this.userId = userId;
}
public void setUsername(String username) {
this.username = username;
}
public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}
public String getUserId() {
return userId;
}
public String getUsername() {
return username;
}
public String getUstatus() {
return ustatus;
}
}
(2)dao 接口、dao 实现类
① dao 接口
public interface BookDao {
void add(Book book);
void update(Book book);
void delete(String id);
}
② dao 实现类
@Repository
public class BookDaoImpl implements BookDao{
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(Book book) {
//创建sql语句值
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 delete(String id) {
String sql = "delete from t_book where user_id = ?";
int update = jdbcTemplate.update(sql,id);
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);
}
}
(3)service 类
@Service
public class BookService {
@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);
}
}
③ 调用 JdbcTemplate 对象里的 update
方法实现添加操作
第一个参数:sql 语句
第二个参数:可变参数,设置 sql 语句值
(4)测试类
@org.junit.Test
public void testJdbcTemplateAdd(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
Book book = new Book();
book.setUserId("1");
book.setUsername("张三");
book.setUstatus("A");
bookService.addBook(book);
}
@org.junit.Test
public void testJdbcTemplateDelete(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
String id = "1";
bookService.deleteBook(id);
}
@org.junit.Test
public void testJdbcTemplateUpdate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
Book book = new Book();
book.setUserId("1");
book.setUsername("李四");
book.setUstatus("B");
bookService.updateBook(book);
}
2、查询
2.1 查询返回某个值
场景:查询表里有多少条记录,返回某个值
① 调用 JdbcTemplate 对象里的 queryForObject
方法实现添加操作
第一个参数:sql 语句
第二个参数:返回类型 class
② dao 实现类
//查询表中记录数
@Override
public int selectCount() {
String sql = "select count(*) from t_book";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
③ 测试类
@org.junit.Test
public void testJdbcTemplateCount(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
System.out.println(bookService.findCount());
}
2.2 查询返回对象
场景:查询图书详情
① 调用 JdbcTemplate 对象里的 queryForObject
方法实现添加操作
第一个参数:sql 语句
第二个参数:RowMapper,是接口,针对返回不同类型数据,使用这个接口里面的实现类完成数据封装
第三个参数:sql 语句值
② dao 实现类
//查询返回对象
@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;
}
③ 测试类
@org.junit.Test
public void testJdbcTemplateFindBook(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
System.out.println(bookService.findOne("1"));
}
2.3 查询返回集合
场景:查询图书列表分页
① 调用 JdbcTemplate 对象里的 query
方法实现添加操作
第一个参数:sql 语句
第二个参数:RowMapper,是接口,针对返回不同类型数据,使用这个接口里面的实现类完成数据封装
第三个参数:sql 语句值,可省略
② dao 实现类
//查询返回集合
@Override
public List<Book> findAllBook() {
String sql = "select * from t_book";
List<Book> books = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return books;
}
③ 测试类
@org.junit.Test
public void testJdbcTemplateFindAll(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
System.out.println(bookService.findAll());
}
3、批量操作
批量操作:操作表内多条记录
3.1 批量添加
① 调用 JdbcTemplate 对象里的 batchUpdate
方法实现批量添加操作
第一个参数:sql 语句
第二个参数:List 集合,添加多条记录数据
② dao 实现类
//批量添加
@Override
public List<Book> findAllBook() {
String sql = "select * from t_book";
List<Book> books = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return books;
}
③ 测试类
@org.junit.Test
public void testJdbcTemplateBatchAdd(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> batchArgs = new ArrayList<Object[]>();
Object[] o1 = {"2","王五","B"};
Object[] o2 = {"3","赵四","C"};
Object[] o3 = {"4","刘七","A"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
bookService.batchAdd(batchArgs);
}
3.2 批量修改
① 调用 JdbcTemplate 对象里的 batchUpdate
方法实现批量修改操作
第一个参数:sql 语句
第二个参数:List 集合,添加多条记录数据
② dao 实现类
//批量修改
@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));
}
③ 测试类
@org.junit.Test
public void testJdbcTemplateBatchUpdate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> batchArgs = new ArrayList<Object[]>();
Object[] o1 = {"AAA","B","2"};
Object[] o2 = {"BBB","C","3"};
Object[] o3 = {"CCC","A","4"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
bookService.batchUpdate(batchArgs);
}
3.3 批量删除
① 调用 JdbcTemplate 对象里的 batchUpdate
方法实现批量删除操作
第一个参数:sql 语句
第二个参数:List 集合,添加多条记录数据
② dao 实现类
//批量删除
@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
String sql = "delete from t_book where user_id = ?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
③ 测试类
@org.junit.Test
public void testJdbcTemplateBatchDelete(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> batchArgs = new ArrayList<Object[]>();
Object[] o1 = {"2"};
Object[] o2 = {"3"};
Object[] o3 = {"4"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
bookService.batchDelete(batchArgs);
}
三、程序源码
1、程序结构
2、dao 包
2.1 BookDao 接口
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 batchDeleteBook(List<Object[]> batchArgs);
}
2.2 BookDaoImpl 实现类
@Repository
public class BookDaoImpl implements BookDao{
@Autowired
private JdbcTemplate jdbcTemplate;
//增加
@Override
public void add(Book book) {
//创建sql语句值
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> books = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return books;
}
//批量添加
@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));
}
//批量修改
@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 batchDeleteBook(List<Object[]> batchArgs) {
String sql = "delete from t_book where user_id = ?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
}
3、entity 包
3.1 Book 类
public class Book {
private String userId;
private String username;
private String ustatus;
@Override
public String toString() {
return "Book{" +
"userId='" + userId + '\'' +
", username='" + username + '\'' +
", ustatus='" + ustatus + '\'' +
'}';
}
public void setUserId(String userId) {
this.userId = userId;
}
public void setUsername(String username) {
this.username = username;
}
public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}
public String getUserId() {
return userId;
}
public String getUsername() {
return username;
}
public String getUstatus() {
return ustatus;
}
}
4、service 包
4.1 Service 类
@Service
public class BookService {
@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 batchUpdate(List<Object[]> batchArgs){
bookDao.batchUpdateBook(batchArgs);
}
//批量删除
public void batchDelete(List<Object[]> batchArgs){
bookDao.batchDeleteBook(batchArgs);
}
}
5、resources 包
5.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:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
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/util http://www.springframework.org/schema/util/spring-util.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.spring5"></context:component-scan>
<!-- 配置Druid连接池 -->
<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/Springsgg?serverTimezone=UTC"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!-- JdbcTemplate 对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入dataSource -->
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
6、test 包
6.1 Test 类
public class Test {
//增加
@org.junit.Test
public void testJdbcTemplateAdd(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
Book book = new Book();
book.setUserId("1");
book.setUsername("张三");
book.setUstatus("A");
bookService.addBook(book);
}
//修改
@org.junit.Test
public void testJdbcTemplateDelete(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
String id = "1";
bookService.deleteBook(id);
}
//删除
@org.junit.Test
public void testJdbcTemplateUpdate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
Book book = new Book();
book.setUserId("1");
book.setUsername("李四");
book.setUstatus("B");
bookService.updateBook(book);
}
//查询表中记录数
@org.junit.Test
public void testJdbcTemplateCount(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
System.out.println(bookService.findCount());
}
//查询返回对象
@org.junit.Test
public void testJdbcTemplateFindBook(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
System.out.println(bookService.findOne("1"));
}
//查询返回集合
@org.junit.Test
public void testJdbcTemplateFindAll(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
System.out.println(bookService.findAll());
}
//批量添加
@org.junit.Test
public void testJdbcTemplateBatchAdd(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> batchArgs = new ArrayList<Object[]>();
Object[] o1 = {"2","王五","B"};
Object[] o2 = {"3","赵四","C"};
Object[] o3 = {"4","刘七","A"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
bookService.batchAdd(batchArgs);
}
//批量修改
@org.junit.Test
public void testJdbcTemplateBatchUpdate(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> batchArgs = new ArrayList<Object[]>();
Object[] o1 = {"AAA","B","2"};
Object[] o2 = {"BBB","C","3"};
Object[] o3 = {"CCC","A","4"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
bookService.batchUpdate(batchArgs);
}
//批量删除
@org.junit.Test
public void testJdbcTemplateBatchDelete(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<Object[]> batchArgs = new ArrayList<Object[]>();
Object[] o1 = {"2"};
Object[] o2 = {"3"};
Object[] o3 = {"4"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
bookService.batchDelete(batchArgs);
}
}
7、pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Spring5_demo01</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>6</source>
<target>6</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<org.springframework.version>5.2.6.RELEASE</org.springframework.version>
</properties>
<dependencies>
<!-- Spring依赖 -->
<!-- 1.Spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 2.Spring dao依赖 -->
<!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 3.Spring web依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>compile</scope>
</dependency>
<!-- 5.Druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- 6.注解 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 7.AspectJ -->
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjtools -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.4</version>
</dependency>
<!-- 8.Mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
</dependencies>
</project>
8、数据库
/*
Navicat MySQL Data Transfer
Source Server : 127.0.0.1
Source Server Version : 80026
Source Host : localhost:3306
Source Database : springsgg
Target Server Type : MYSQL
Target Server Version : 80026
File Encoding : 65001
Date: 2021-12-24 00:32:56
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for t_book
-- ----------------------------
DROP TABLE IF EXISTS `t_book`;
CREATE TABLE `t_book` (
`user_id` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
`username` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
`ustatus` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;