1、引入相关 jar 包
2、在 Spring 配置文件中配置数据库连接池
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""xmlns:xsi=""xmlns:context=""xsi:schemaLocation=" .xsd .xsd
"><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="clone"><property name="url" value="jdbc:mysql:///spring_test" /><property name="username" value="root" /><property name="password" value="123456" /><property name="driverClassName" value=sql.jdbc.Driver" /></bean>
</beans>
3、配置 JdbcTemplate 对象,注入 DataSource
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""xmlns:xsi=""xmlns:context=""xsi:schemaLocation=" .xsd .xsd
"><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="clone"><property name="url" value="jdbc:mysql:///spring_test" /><property name="username" value="root" /><property name="password" value="123456" /><property name="driverClassName" value=sql.jdbc.Driver" /></bean><!-- 创建 JdbcTemplate 对象 --><bean id="jdbcTemplate" class="org.JdbcTemplate"><!-- 注入 dataSource --><property name="dataSource" ref="dataSource" /></bean>
</beans>
4、创建 service 和 dao 类,在 dao 类中注入 JdbcTemplate 对象
在配置文件中开启组件扫描(也可以使用配置类代替)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""xmlns:xsi=""xmlns:context=""xsi:schemaLocation=" .xsd .xsd
"><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="clone"><property name="url" value="jdbc:mysql:///spring_test" /><property name="username" value="root" /><property name="password" value="123456" /><property name="driverClassName" value=sql.jdbc.Driver" /></bean><!-- 开启组件扫描 --><context:component-scan base-package="com.laoyang.spring" /><!-- 创建 JdbcTemplate 对象 --><bean id="jdbcTemplate" class="org.JdbcTemplate"><!-- 注入 dataSource --><property name="dataSource" ref="dataSource" /></bean>
</beans>
一定要记得引入 context 名称空间
service类:
package com.laoyang.spring.service;import com.laoyang.spring.dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {/*** 注入 Dao*/@Autowiredprivate BookDao bookDao;
}
dao类(接口 & 实现类):
package com.laoyang.spring.dao;public interface BookDao {
}
package com.laoyang.spring.dao;import org.springframework.beans.factory.annotation.Autowired;
import org.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {/*** 注入 JdbcTemplate 对象*/@Autowiredprivate JdbcTemplate jdbcTemplate;
}
先提前准备好对应的数据库表:t_book
虽然表名的意思是 “图书”,但是这里大伙可以理解为 “用户”,就当作是用户表来使用就好了,实在看不下去的可以将表名和实体类这些都改成 user
1、对数据库表创建实体类
package com.ity;/*** @ClassName Book* @Description: 用户类* @Author Laoyang* @Date 2021/12/20 20:04*/
public class Book {/*** 用户id*/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;}
}
2、编写 service 和 dao(在 dao 进行数据库添加操作)
BookService 类:
package com.laoyang.spring.service;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {/*** 注入 Dao*/@Autowiredprivate BookDao bookDao;/*** 新增方法*/public void addUser(Book book) {bookDao.add(book);}
}
BookDao 接口:
package com.laoyang.spring.dao;import com.ity.Book;public interface BookDao {/*** 添加用户* @param book*/void add(Book book);
}
BookDaoImpl 类:
package com.laoyang.spring.dao;import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {/*** 注入 JdbcTemplate 对象*/@Autowiredprivate JdbcTemplate jdbcTemplate;/*** 添加用户* @param book*/@Overridepublic void add(Book book) {/*调用 jdbcTemplate 对象里面的 update(String sql, args) 方法实现添加操作参数一:SQL 语句参数二:可变参数,设置 sql 中的语句值*/// 1、创建 sqlString sql = "insert into t_book values(?, ?, ?)";// 2、调用 update 方法实现Object[] books = {UserId(), Username(), Ustatus()};int insert = jdbcTemplate.update(sql, books);// 可以将可变参数封装到数组里面在传到方法中,也可以直接将参数传到方法中
// int insert = jdbcTemplate.update(sql, UserId(), Username(), Ustatus());if (insert > 0) {System.out.println("新增成功!");return;}System.out.println("新增失败!");}
}
3、测试效果
package com.st;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import com.laoyang.spring.service.BookService;
import org.junit.Test;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;public class JdbcTest {@Testpublic void testAddUser() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);Book book = new Book();book.setUserId("1001");book.setUsername("Tom");book.setUstatus("A");bookService.addUser(book);}
}
添加成功后就可以查看数据库表中的数据了
说明:因为增删改的方式都差不多,就是修改一下语句就好了,所以这里直接把修改和删除一起演示
基于上面的实体类完成这两个操作
编写 service 和 dao(在 dao 进行数据库添加操作)
BookService类:
package com.laoyang.spring.service;import com.laoyang.spring.dao.BookDao;
import com.ity.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) {bookDao.add(book);}/*** 修改方法*/public void updateBook(Book book) {bookDao.update(book);}/*** 删除方法*/public void deleteBook(String userId) {bookDao.delete(userId);}
}
BookDao 接口:
package com.laoyang.spring.dao;import com.ity.Book;public interface BookDao {/*** 添加用户* @param book*/void add(Book book);/*** 修改用户* @param book*/void update(Book book);/*** 删除用户* @param userId*/void delete(String userId);
}
BookDaoImpl 类:
package com.laoyang.spring.dao;import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {/*** 注入 JdbcTemplate 对象*/@Autowiredprivate JdbcTemplate jdbcTemplate;/*** 添加用户* @param book*/@Overridepublic void add(Book book) {/*调用 jdbcTemplate 对象里面的 update(String sql, args) 方法实现添加操作参数一:SQL 语句参数二:可变参数,设置 sql 中的语句值*/// 1、创建 sqlString sql = "insert into t_book values(?, ?, ?)";// 2、调用 update 方法实现Object[] books = {UserId(), Username(), Ustatus()};int insert = jdbcTemplate.update(sql, books);// 可以将可变参数封装到数组里面在传到方法中,也可以直接将参数传到方法中
// int insert = jdbcTemplate.update(sql, UserId(), Username(), Ustatus());if (insert > 0) {System.out.println("新增成功!");return;}System.out.println("新增失败!");}/*** 修改用户* @param book*/@Overridepublic void update(Book book) {String sql = "update t_book set username=?, ustatus=? where user_id=?";Object[] books = {Username(), Ustatus(), UserId()};int update = jdbcTemplate.update(sql, books);if (update > 0) {System.out.println("修改成功!");return;}System.out.println("修改失败!");}/*** 删除用户* @param userId*/@Overridepublic void delete(String userId) {String sql = "delete from t_book where user_id = ?";int delet = jdbcTemplate.update(sql, userId);if (delet > 0) {System.out.println("删除成功!");return;}System.out.println("删除失败!");}
}
测试效果
package com.st;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import com.laoyang.spring.service.BookService;
import org.junit.Test;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;public class JdbcTest {// 修改操作@Testpublic void testUpdateUser() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);Book book = new Book();book.setUserId("1001");book.setUsername("Jerry");book.setUstatus("C");bookService.updateBook(book);}// 删除操作@Testpublic void testDeleteUser() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);bookService.deleteBook("1001");}
}
案例:查询表中有多少个用户,返回的是某个值
编写 service 和 dao(在 dao 进行数据库添加操作)
BookService 类:
package com.laoyang.spring.service;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {/*** 注入 Dao*/@Autowiredprivate BookDao bookDao;/*** 查询表中的用户总数*/public int findCount() {return bookDao.selectCount();}
}
BookDao 接口:
package com.laoyang.spring.dao;import com.ity.Book;public interface BookDao {/*** 查询表中的用户总数*/int selectCount();
}
BookDaoImpl 类:
package com.laoyang.spring.dao;import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {/*** 注入 JdbcTemplate 对象*/@Autowiredprivate JdbcTemplate jdbcTemplate;/*** 查询表中的用户总数*/@Overridepublic int selectCount() {/*调用 jdbcTemplate 对象里面的 queryForObject(String sql, Class<T> requiredType) 方法实现该操作参数一:sql 语句参数二:返回类型的 Class*/String sql = "select count(user_id) from t_book";Integer count = jdbcTemplate.queryForObject(sql, Integer.class);return count;}
}
测试效果
package com.st;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import com.laoyang.spring.service.BookService;
import org.junit.Test;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;public class JdbcTest {@Testpublic void testCount() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);int count = bookService.findCount();System.out.println("当前表中还有" + count + "个用户。");}
}
案例:查询 id 为 1001 的用户详情
因为需要查看对象数据,所以我们先给 Book 实体类编写一个 toString 方法
package com.ity;/*** @ClassName Book* @Description: 用户类* @Author Laoyang* @Date 2021/12/20 20:04*/
public class Book {//...此处为了简便省略前面的配置@Overridepublic String toString() {return "Book{" +"userId='" + userId + ''' +", username='" + username + ''' +", ustatus='" + ustatus + ''' +'}';}
}
编写 service 和 dao(在 dao 进行数据库添加操作)
BookService 类:
package com.laoyang.spring.service;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {/*** 注入 Dao*/@Autowiredprivate BookDao bookDao;/*** 查询 id 为 1001 的用户详情*/public Book findBookByUserId(String userId) {return bookDao.findBookByUserId(userId);}
}
BookDao 接口:
package com.laoyang.spring.dao;import com.ity.Book;public interface BookDao {/*** 查询 id 为 1001 的用户详情*/Book findBookByUserId(String userId);
}
BookDaoImpl 类:
package com.laoyang.spring.dao;import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.BeanPropertyRowMapper;
import org.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {/*** 查询 id 为 1001 的用户详情*/@Overridepublic Book findBookByUserId(String userId) {/*调用 jdbcTemplate 对象里面的 queryForObject(String sql, RowMapper<T> rowMapper, args) 方法实现该操作参数一:sql 语句参数二:rowMapper 是一个接口,针对返回不同类型的数据,使用这个接口里面的实现类完成数据封装参数三:可变参数*/String sql = "select user_id, username, ustatus from t_book where user_id=?";Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), userId);if (book != null) {return book;}return null;}
}
测试效果
package com.st;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import com.laoyang.spring.service.BookService;
import org.junit.Test;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;public class JdbcTest {@Testpublic void testBook() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);Book book = bookService.findBookByUserId("1001");System.out.println(book);}
}
案例:查询所有用户信息
编写 service 和 dao(在 dao 进行数据库添加操作)
BookService 类:
package com.laoyang.spring.service;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;@Service
public class BookService {/*** 注入 Dao*/@Autowiredprivate BookDao bookDao;/*** 查询所有用户信息*/public List<Book> findBookByAll() {return bookDao.findBookByAll();}
}
BookDao 接口:
package com.laoyang.spring.dao;import com.ity.Book;
import java.util.List;public interface BookDao {/*** 查询所有用户信息*/List<Book> findBookByAll();
}
BookDaoImpl 类:
package com.laoyang.spring.dao;import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.BeanPropertyRowMapper;
import org.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;@Repository
public class BookDaoImpl implements BookDao {/*** 注入 JdbcTemplate 对象*/@Autowiredprivate JdbcTemplate jdbcTemplate;/*** 查询所有用户信息*/@Overridepublic List<Book> findBookByAll() {/*调用 jdbcTemplate 对象里面的 query(String sql, RowMapper<T> rowMapper, args) 方法实现该操作参数一:sql 语句参数二:rowMapper 是一个接口,针对返回不同类型的数据,使用这个接口里面的实现类完成数据封装参数三:可变参数,可选*/String sql = "select user_id, username, ustatus from t_book";List<Book> books = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));if (!books.isEmpty()) {return books;}return null;}
}
测试效果
package com.st;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import com.laoyang.spring.service.BookService;
import org.junit.Test;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;
import java.util.Arrays;
import java.util.List;public class JdbcTest {@Testpublic void testBookAll() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);List<Book> books = bookService.findBookByAll();System.out.println(books);}
}
批量操作:操作表里面的多条记录
编写 service 和 dao(在 dao 进行数据库添加操作)
BookService 类:
package com.laoyang.spring.service;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;@Service
public class BookService {/*** 注入 Dao*/@Autowiredprivate BookDao bookDao;/*** 批量新增用户*/public void addBooksInBulk(List<Object[]> books) {bookDao.addBooksInBulk(books);}
}
BookDao 接口:
package com.laoyang.spring.dao;import com.ity.Book;
import java.util.List;public interface BookDao {/*** 批量新增用户* @param books*/void addBooksInBulk(List<Object[]> books);
}
BookDaoImpl 类:
package com.laoyang.spring.dao;import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.BeanPropertyRowMapper;
import org.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;@Repository
public class BookDaoImpl implements BookDao {/*** 注入 JdbcTemplate 对象*/@Autowiredprivate JdbcTemplate jdbcTemplate;/*** 批量新增用户* @param books*/@Overridepublic void addBooksInBulk(List<Object[]> books) {/*调用 jdbcTemplate 对象里面的 batchUpdate(String sql, List<Object[]> batchArgs) 方法实现该操作参数一:sql语句参数二:List集合,添加多条的数据*/String sql = "insert into t_book values(?, ?, ?)";int[] adds = jdbcTemplate.batchUpdate(sql, books);if (adds != null && adds.length > 0) {System.out.println("批量添加成功!");return;}System.out.println("批量添加失败!");}
}
测试效果
package com.st;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import com.laoyang.spring.service.BookService;
import org.junit.Test;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class JdbcTest {@Testpublic void testAddBooks() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);List<Object[]> bookList = new ArrayList<>();Object[] bookArray1 = {"1003", "Mel", "C"};Object[] bookArray2 = {"1004", "Jack", "B"};bookList.add(bookArray1);bookList.add(bookArray2);bookService.addBooksInBulk(bookList);}
}
编写 service 和 dao(在 dao 进行数据库添加操作)
BookService 类:
package com.laoyang.spring.service;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;@Service
public class BookService {/*** 注入 Dao*/@Autowiredprivate BookDao bookDao;/*** 批量修改用户*/public void updateBooksInBulk(List<Object[]> books) {bookDao.updateBooksInBulk(books);}/*** 批量删除用户*/public void deleteBooksInBulk(List<Object[]> userIds) {bookDao.deleteBooksInBulk(userIds);}
}
BookDao 接口:
package com.laoyang.spring.dao;import com.ity.Book;
import java.util.List;public interface BookDao {/*** 批量修改用户*/void updateBooksInBulk(List<Object[]> books);/*** 批量删除用户*/void deleteBooksInBulk(List<Object[]> userIds);
}
BookDaoImpl 类:
package com.laoyang.spring.dao;import com.ity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.BeanPropertyRowMapper;
import org.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;@Repository
public class BookDaoImpl implements BookDao {/*** 注入 JdbcTemplate 对象*/@Autowiredprivate JdbcTemplate jdbcTemplate;/*** 批量修改用户*/@Overridepublic void updateBooksInBulk(List<Object[]> books) {String sql = "update t_book set username = ?, ustatus = ? where user_id = ?";int[] updates = jdbcTemplate.batchUpdate(sql, books);if (updates != null && updates.length > 0) {System.out.println("批量修改成功!");return;}System.out.println("批量修改失败!");}/*** 批量删除用户*/@Overridepublic void deleteBooksInBulk(List<Object[]> userIds) {String sql = "delete from t_book where user_id = ?";int[] deletes = jdbcTemplate.batchUpdate(sql, userIds);if (deletes != null && deletes.length > 0) {System.out.println("批量删除成功!");return;}System.out.println("批量删除失败!");}
}
测试效果
package com.st;import com.laoyang.spring.dao.BookDao;
import com.ity.Book;
import com.laoyang.spring.service.BookService;
import org.junit.Test;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class JdbcTest {@Testpublic void testUpdateBooks() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);List<Object[]> bookList = new ArrayList<>();Object[] bookArray1 = {"Ronaldinho", "A", "1003"};Object[] bookArray2 = {"lamb", "A", "1004"};bookList.add(bookArray1);bookList.add(bookArray2);bookService.updateBooksInBulk(bookList);}@Testpublic void testDeleteBooks() {ApplicationContext context = new ClassPathXmlApplicationContext(l");BookService bookService = Bean("bookService", BookService.class);List<Object[]> bookList = new ArrayList<>();Object[] bookArray1 = {"1003"};Object[] bookArray2 = {"1004"};bookList.add(bookArray1);bookList.add(bookArray2);bookService.deleteBooksInBulk(bookList);}
}
本文发布于:2024-02-04 22:13:34,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170717592760072.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |