python爬虫豆瓣读书top250+数据清洗+数据库+Java后端开发+Echarts数据可视化(五)

接下来继续完成各作者出版图书数量、图书价格数量总计、各评分书籍数量的相关代码及结果展示。具体不详细讲了,可参考(四)https://blog.csdn.net/qq_45804925/article/details/113117424

1 各作者出版图书数量

在这里插入图片描述

1.1 在cn.geo.doubanbook.entity包下创建Author.java类

package cn.geo.doubanbook.entity;

import java.io.Serializable;
/**
 * 各作者出版图书数量
 * @author SGG
 *
 */
public class Author implements Serializable{
   

	private static final long serialVersionUID = 1365043351381386615L;
	
	private String author;
	private Integer num;
	
	public Author() {
   	}
	
	public Author(String author, Integer num) {
   
		super();
		this.author = author;
		this.num = num;
	}
	
	@Override
	public int hashCode() {
   
		final int prime = 31;
		int result = 1;
		result = prime * result + ((author == null) ? 0 : author.hashCode());
		result = prime * result + ((num == null) ? 0 : num.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
   
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Author other = (Author) obj;
		if (author == null) {
   
			if (other.author != null)
				return false;
		} else if (!author.equals(other.author))
			return false;
		if (num == null) {
   
			if (other.num != null)
				return false;
		} else if (!num.equals(other.num))
			return false;
		return true;
	}
	public String getAuthor() {
   
		return author;
	}
	public void setAuthor(String author) {
   
		this.author = author;
	}
	public Integer getNum() {
   
		return num;
	}
	public void setNum(Integer num) {
   
		this.num = num;
	}
	@Override
	public String toString() {
   
		return "Author [author=" + author + ", num=" + num + "]";
	}		
}

1.2 在cn.geo.doubanbook.dao包下创建AuthorDAO.java类

package cn.geo.doubanbook.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import cn.geo.doubanbook.entity.Author;
import cn.geo.doubanbook.util.DBUtils;

/**
 * 各作者出版图书数量的持久层类
 * @author SGG
 *
 */
public class AuthorDAO {
   
	
	/**
	 * 查询各作者出版图书数量
	 * @return
	 * @throws SQLException
	 */
	public List<Author> listAuthor() throws SQLException {
   
		List<Author> list = new ArrayList<Author>(248);
		
		// 从数据库连接池获取连接
		Connection conn = DBUtils.getConn();
		// 声明SQL的执行器
		Statement st = conn.createStatement();
		// 执行SQL语句
		String sql = "select * from book_author_num";
		ResultSet rs = st.executeQuery(sql);
		// 对结果集进行操作
		while(rs.next()) {
   
			// 获取该行数据中的指定字段
			String author = rs.getString("author");
			int num = rs.getInt("num");
			// 创建Author对象,封装一行数据
			Author an= new Author(author, num);
			// 将Author对象 保存到集合中
			list.add(an);
		}
		// 关闭连接释放资源
		st.close();
		conn.close();
		
		return list;	
	}
}

1.3 持久层测试用例开发

package cn.geo.doubanbook.dao;

import java.sql.SQLException;
import java.util.List;

import org.junit.Test;

import cn.geo.doubanbook.dao.AuthorDAO;
import cn.geo.doubanbook.entity.Author;

public class AuthorDAOTest {
   
	
	AuthorDAO dao = new AuthorDAO();

	@Test
	public void listAuthor() throws SQLException{
   
		List<Author> list = dao.listAuthor();
		list.forEach(item->System.out.println(item));
	}
}

1.4 在cn.geo.doubanbook.entity包下创建AuthorVO.java类

package cn.geo.doubanbook.entity;

import java.io.Serializable;
import java.util.List;

public class AuthorVO implements Serializable{
   

	private static final long serialVersionUID = 4109889845897505740L;
	
	private List<String> xData;
	private List<Integer> yData;

	public AuthorVO() {
   	}
	/**
	 * @param xData
	 * @param yData
	 */
	public AuthorVO(List<String> xData, List<Integer> yData) {
   
		super();
		this.xData = xData;
		this.yData = yData;
	}
	@Override
	public String toString() {
   
		return "AuthorVO [xData=" + xData + ", yData=" + yData + "]";
	}
	@Override
	public int hashCode() {
   
		final int prime = 31;
		int result = 1;
		result = prime * result + ((xData == null) ? 0 : xData.hashCode());
		result = prime * result + ((yData == null) ? 0 : yData.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
   
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		AuthorVO other = (AuthorVO) obj;
		if (xData == null) {
   
			if (other.xData != null)
				return false;
		} else if (!xData.equals(other.xData))
			return false;
		if (yData == null) {
   
			if (other.yData != null)
				return false;
		} else if (!yData.equals(other.yData))
			return false;
		return true;
	}
	public List<String> getxData() {
   
		return xData;
	}
	public void setxData(List<String> xData) {
   
		this.xData = xData;
	}
	public List<Integer> getyData() {
   
		return yData;
	}
	public void setyData(List<Integer> yData) {
   
		this.yData = yData;
	}
}

1.5 在cn.geo.doubanbook.service包下创建AuthorService.java类

package cn.geo.doubanbook.service;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import cn.geo.doubanbook.dao.AuthorDAO;
import cn.geo.doubanbook.entity.Author;
import cn.geo.doubanbook.entity.AuthorVO;

public class AuthorService {
   

	private AuthorDAO dao = new AuthorDAO();
	
	public AuthorVO findAuthor() {
   
		// 调用持久层方法,查询所需数据
		List<Author> list = null;
		try {
   
			list = dao.listAuthor();
		} catch (SQLException e) {
   
			e.printStackTrace();
			return null;
		}
		// 创建xData,保存x轴数据
		List<String> xData = new ArrayList<String>(list.size());
		// 创建yData,保存y轴数据
		List<Integer> yData = new ArrayList<Integer>(list.size());
		// 遍历持久层查询到的数据
		for(Author an: list) {
   
			xData.add(an.getAuthor());
			yData.add(an.getNum());
		}
		// 创建AuthorVO对象,封装xData和yData
		AuthorVO vo = new AuthorVO(xData, yData);
		return vo;
	}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值