使用所学Spring知识,实现简易的图书查询系统功能。实现查询全部图书。 根据书籍编号查询信息。 根据书名查询书籍信息。 根据状态查询书籍信息。

相关 知识 >>>

相关 练习 >>>

 

实现要求:

使用所学Spring知识,实现简易的图书查询系统功能。

要求如下:

  • 查询全部图书。
  • 根据书籍编号查询信息。
  • 根据书名查询书籍信息。
  • 根据状态查询书籍信息。

运行结果:

实现思路:

具体实现步骤:

(1)在MySQL数据库中创建t00_book表,代码如下:

-- ----------------------------
-- Table structure for t00_book
-- ----------------------------
DROP TABLE IF EXISTS `t00_book`;
CREATE TABLE `t00_book`  (
  `bookId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图书编号',
  `bookName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图书名字',
  `author` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '作者',
  `pages` int(11) NULL DEFAULT NULL COMMENT '页数',
  `flag` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '状态(0-借出,1-在库)'
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

(2)在t00_book表中插入初始化数据,代码如下:

-- ----------------------------
-- Records of t00_book
-- ----------------------------
INSERT INTO `t00_book` VALUES ('1000', '《西游记》', '吴承恩', 324, '1');
INSERT INTO `t00_book` VALUES ('1002', '《红楼梦》', '曹雪芹', 425, '1');
INSERT INTO `t00_book` VALUES ('1003', '《三国演义》', '罗贯中', 346, '1');
INSERT INTO `t00_book` VALUES ('1004', '《水浒传》', '施耐庵', 298, '1');
INSERT INTO `t00_book` VALUES ('1005', '《儒林外史》', '吴敬梓', 234, '1');
INSERT INTO `t00_book` VALUES ('1006', '《离骚》', '屈原', 186, '1');
INSERT INTO `t00_book` VALUES ('1007', '《牡丹亭》', '汤显祖', 168, '1');
INSERT INTO `t00_book` VALUES ('1007', 'Python高级编程', '张大大', 322, '1');

(3)引入jar包:

(4)在applicationContext.xml配置文件中打开注解扫描功能,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xmlns="http://www.springframework.org/schema/beans" 
		xmlns:p="http://www.springframework.org/schema/p" 
		xmlns:context="http://www.springframework.org/schema/context" 
		xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.2.xsd ">
	
	<!-- 开启注解扫描功能  -->
	<context:component-scan base-package="com.mhys.book"></context:component-scan>
	
	
	
</beans>

(5)在com.mhys.book.pojo包下创建DataSource类,添加driverClassName,url,username,password4个属性,然后又注入属性值,代码如下:

package com.mhys.book.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class DataSource {
	@Value("com.mysql.jdbc.Driver")
	private String driverClassName;
	@Value("jdbc:mysql://127.0.0.1:3306/t00_book")
	private String url;
	@Value("root")
	private String username;
	@Value("123456")
	private String password;
	
	public String getDriverClassName() {
		return driverClassName;
	}
	public void setDriverClassName(String driverClassName) {
		this.driverClassName = driverClassName;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	

}

(6)在com.mhys.book.pojo包下创建Book类,添加bookId,bookName,author,pages,flag5个属性,然后注入属性值,代码如下

package com.mhys.book.pojo;

public class Book {
	private String bookId;
	private String bookName;
	private String author;
	private int pages;
	private String flag;
	
	public String getBookId() {
		return bookId;
	}
	public void setBookId(String bookId) {
		this.bookId = bookId;
	}
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public int getPages() {
		return pages;
	}
	public void setPages(int pages) {
		this.pages = pages;
	}
	public String getFlag() {
		return flag;
	}
	public void setFlag(String flag) {
		this.flag = flag;
	}
	
	
}

(7)在com.mhys.book.dao包下创建BaseDao类,添加dataSource属性并注入属性值,然后声明getCounection()方法,代码如下:

package com.mhys.book.dao;

import java.sql.Connection;
import java.sql.DriverManager;


import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.annotation.PostConstruct;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.mhys.book.pojo.DataSource;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class BaseDao {
	@Autowired
	private DataSource dataSource;
	
	@PostConstruct
	public Connection getConnection() throws Exception{
		Class.forName(dataSource.getDriverClassName());
		String url = dataSource.getUrl();
		String user = dataSource.getUsername();
		String password = dataSource.getPassword();
		Connection connection = DriverManager.getConnection(url, user, password);
		
		return connection;
	}
	
	public void close(ResultSet rs,PreparedStatement ps,Connection conn) throws Exception{
		if(rs != null){
			rs.close();
		}
		if(ps != null){
			ps.close();
		}
		if(conn != null){
			conn.close();
		}
	}

}

(8)在com.mhys.book.dao包下创建BookDao类,声明getAllBooksInfo()方法、getBooksInfoByid()方法,添加getBooksInfoByBookName()方法和getBooksInfoByflag()方法,代码如下:

package com.mhys.book.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.Test;
import org.springframework.stereotype.Component;


@Component
public class BookDao extends BaseDao {
	
	//查询全部
	public ResultSet getAllBooksInfo() throws Exception{
		String sql = "select bookId,bookName,author,pages,flag from t00_book";
		Connection connection = this.getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		return rs;
	}
	
	//根据书籍编号查询信息
	public ResultSet getBooksInfoById(String bookId) throws Exception{
		String sql = "select bookId,bookName,author,pages,flag from t00_book where bookId=?";
		Connection connection = this.getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		ps.setString(1, bookId);
		ResultSet rs = ps.executeQuery();
		return rs;
	}
	
	//根据书名查询书籍信息
	public ResultSet getBooksInfoByBookName(String bookName) throws Exception{
		String sql = "select bookId,bookName,author,pages,flag from t00_book where bookName like ?";
		Connection connection = this.getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		ps.setString(1, "%"+bookName+"%");
		ResultSet rs = ps.executeQuery();
		return rs;
	}
	
	//根据状态查询书籍信息
	public ResultSet getBooksInfoByflag(String flag) throws Exception{
		String sql = "select bookId,bookName,author,pages,flag from t00_book where flag=?";
		Connection connection = this.getConnection();
		PreparedStatement ps = connection.prepareStatement(sql);
		ps.setString(1, flag);
		ResultSet rs = ps.executeQuery();
		return rs;
	}
	
	
}

(9)在com.mhys.book.service包下创建BookService类,添加bookDao属性并注入属性值,然后声明 getAllBooksInfo() 方法和 getBooksInfoById()方法、getBooksInfoByBookName()方法、getBooksInfoByflag()方法、和print()方法,代码如下:

package com.mhys.book.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.mhys.book.dao.BookDao;

@Component
public class BookService {
	@Autowired
	private BookDao bookDao;
	
	//查询全部
	public void getAllBooksInfo() throws Exception{
		ResultSet rs =  bookDao.getAllBooksInfo();
		print(rs);
	}
	
	//根据书籍编号查询信息
	public void getBooksInfoById(String bookId) throws Exception{
		ResultSet rs =  bookDao.getBooksInfoById(bookId);
		print(rs);
	}
	
	//根据书名查询书籍信息
	public void getBooksInfoByBookName(String bookName) throws Exception{
		ResultSet rs =  bookDao.getBooksInfoByBookName(bookName);
		print(rs);
	}
	
	//根据状态查询书籍信息
	public void getBooksInfoByflag(String flag) throws Exception{
		ResultSet rs = bookDao.getBooksInfoByflag(flag);
		print(rs);
	}
	
	//释放资源
	public void close(String flag) throws Exception{
		ResultSet rs = bookDao.getBooksInfoByflag(flag);
		print(rs);
	}
	
	//打印结果
	public void print(ResultSet rs) throws SQLException{
		if(rs==null){
			System.out.println("查询无结果!");
		}else{
			System.out.println("编号\t\t书名\t\t作者\t\t总页数\t\t状态");
			while (rs.next()) {
			    for (int i = 1; i <= 5; i++) {
			    	String value = "";
			    	if(i==5){
			    		value = rs.getString(i).equals("0")?"借出":"在库";
			    	}else{
			    		value = rs.getString(i);
			    	}
			    	System.out.print(value+"\t\t");
			    }
			    System.out.println("");
			}
		}
		
	}
}

(10)在com.mhys.book.main包下创建MainClass类,添加bookService属性并注入属性值,然后声明main()方法、start()方法、printMenu()方法、getAllBooksInfo()方法、getBooksInfoById()方法、getBooksInfoByBookName()方法、getBooksInfoByflag()方法,代码如下:

package com.mhys.book.main;

import java.util.Scanner;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

import com.mhys.book.service.BookService;

@Component
public class MainClass {
	@Autowired
	private BookService bookService;
	
	public static void main(String[] args) throws Exception {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		MainClass main = (MainClass) context.getBean("mainClass");
		main.start();
	}
	
	public void start() throws Exception{
		Scanner scan = new Scanner(System.in);
		System.out.println("----------欢迎使用图书管理查询系统----------");
		printMenu();
		
		while(true)
		{
			//读取用户输入
			int choice = scan.nextInt();
			
			if(choice == 5)
			{
				System.out.println("成功退出系统,欢迎再次光临!");
				break;
			}
			switch(choice)//switch形式
			{
			case 1: getAllBooksInfo(); break;
			case 2: getBooksInfoById(); break;
			case 3: getBooksInfoByBookName(); break;
			case 4: getBooksInfoByflag(); break;
			default: System.out.println("输入非法"); 
			continue;
			}
			printMenu(); 
		}

	}
	
	public void printMenu(){
		System.out.println("请选择查询条件:1、查询全部\t2、根据书籍编号查询\t3、根据书籍名称查询\t4、根据状态查询\t5、退出系统");
	}
	
	public void getAllBooksInfo() throws Exception{
		bookService.getAllBooksInfo();
	}
	public void getBooksInfoById() throws Exception{
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入书籍编号:");
		String bookId = scan.next();
		bookService.getBooksInfoById(bookId);
	}
	public void getBooksInfoByBookName() throws Exception{
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入书名:");
		String bookName = scan.next();
		bookService.getBooksInfoByBookName(bookName);
	}
	public void getBooksInfoByflag() throws Exception{
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入状态编号:0、借出\t1、在库");
		String flag = scan.next();
		bookService.getBooksInfoByflag(flag);
	}
}

 

posted @ 2021-05-14 14:59  明金同学  阅读(209)  评论(0编辑  收藏  举报