使用JDBC查询数据库信息

使用JDBC查询数据库信息

平常都是直接使用mybatis操控数据库,现在回顾一下最原始的方法:使用JDBC查询数据库信息

直接上案例

新建maven工程

工程结构

使用JDBC查询数据库信息_第1张图片

数据库sql语句

CREATE DATABASE book;
use  book;

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `book`
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
  `id` int(11) DEFAULT NULL,
  `bookname` varchar(500) DEFAULT NULL,
  `price` float DEFAULT NULL,
  `pic` varchar(200) DEFAULT NULL,
  `bookdesc` varchar(2000) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES ('1', 'java从入门到精通', '56', '1.jpg', '《Java从入门到精通》是人民邮电出版社于 2010年出版的图书,由国家863中部软件孵化器主编。以零基础讲解为宗旨,深入浅出地讲解Java的各项技术及实战技能。本书从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发应该掌握的各方面技术。全书共分28章,包括:初识Java,熟悉Eclipse开发工具,Java 语言基础,流程控制,字符串,数组,类和对象,包装类,数字处理类,接口、继承与多态,类的高级特性,异常处理,Swing程序设计,集合类,I/O输入输出,反射,枚举类型与泛型,多线程,网络通信,数据库操作,Swing表格组件,Swing树组件,Swing其他高级组件,高级布局管理器,高级事件处理,AWT绘图与音频播放,打印技术和企业进销存管理系统等。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会Java程序开发的精髓,快速提高开发技能。.');
INSERT INTO `book` VALUES ('2', 'java web开发', '80', '2.jpg', 'Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。');
INSERT INTO `book` VALUES ('3', 'lucene从入门到精通', '100', '3.jpg', '本书总结搜索引擎相关理论与实际解决方案,并给出了 Java 实现,其中利用了流行的开源项目Lucene和Solr,而且还包括原创的实现。本书主要包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例分析。爬虫部分介绍了网页遍历方法和如何实现增量抓取,并介绍了从网页等各种格式的文档中提取主要内容的方法。自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现以及在搜索引擎中的实用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入浅出的介绍并总结了实现方法。在全文检索部分,结合Lucene 3.0介绍了搜索引擎的原理与进展。用简单的例子介绍了Lucene的最新应用方法。本书包括完整的搜索实现过程:从完成索引到搜索用户界面的实现。本书还进一步介绍了实现准实时搜索的方法,展示了Solr 1.4版本的用法以及实现分布式搜索服务集群的方法。最后介绍了在地理信息系统领域和户外活动搜索领域的应用。');
INSERT INTO `book` VALUES ('4', 'lucene in action传智播客', '90', '4.jpg', '本书深入浅出地介绍了lucene——一个开源的使用java语言编写的全文搜索引擎开发包。它通过浅显的语言、大量的图注、丰富的代码示例,以及清晰的结构为读者呈现出作为优秀开源项目的lucene所体现的强大功能。全书共10章,分为两大部分。第1部分lucene的核心,着重于lucene的核心 api介绍,并按照把lucene集成到程序中的顺序宋组织;第2部分lucene的应用,通过对lucene内置工具的介绍,展示了lucene技术的高级应用和在各种程序语言上的移植。.');
INSERT INTO `book` VALUES ('5', 'Lucene Java精华版', '80', '5.jpg', '本书总结搜索引擎相关理论与实际解决方案,并给出了 Java 实现,其中利用了流行的开源项目Lucene和Solr,而且还包括原创的实现。本书主要包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例分析。爬虫部分介绍了网页遍历方法和如何实现增量抓取,并介绍了从网页等各种格式的文档中提取主要内容的方法。自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现以及在搜索引擎中的实用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入浅出的介绍并总结了实现方法。在全文检索部分,结合Lucene 3.0介绍了搜索引擎的原理与进展。用简单的例子介绍了Lucene的最新应用方法。本书包括完整的搜索实现过程:从完成索引到搜索用户界面的实现。本书还进一步介绍了实现准实时搜索的方法,展示了Solr 1.4版本的用法以及实现分布式搜索服务集群的方法。最后介绍了在地理信息系统领域和户外活动搜索领域的应用。');

配置pom.xml

<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.0modelVersion>

    <groupId>cn.itcastgroupId>
    <artifactId>lucene-testartifactId>
    <packaging>jarpackaging>
    <version>1.0-SNAPSHOTversion>

    <properties>
        <mysql.version>5.1.47mysql.version>
        <junit.version>4.12junit.version>
    properties>

    <dependencies>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>${mysql.version}version>
        dependency>
   
        dependency>
        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>${junit.version}version>
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.6version>
            <scope>providedscope>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.3version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>utf-8encoding>
                configuration>
            plugin>
        plugins>
    build>
project>
编写图书实体类

lombok的@Data注解: 自动为实体类提供getter、setter、hashCode、equals、toString方法。

package com.cheung.domain;

import lombok.Data;

@Data
public class Book {
    // 图书id
    private int id;

    // 图书名称
    private String bookName;

    // 图书价格
    private float bookPrice;

    // 图书图片
    private String bookPic;

    // 图书描述
    private String bookDesc;
}

编写图书dao接口
package com.cheung.dao;

import com.cheung.domain.Book;

import java.util.List;

public interface BookDao {

    /**
     * 查询所有图书
     * @return
     */
    public List<Book> findAll();
}

编写图书dao实现类
package com.cheung.dao.impl;

import com.cheung.dao.BookDao;
import com.cheung.domain.Book;

import lombok.SneakyThrows;

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

public class BookDaoImpl implements BookDao {

    @Override
    public List<Book> findAll() {
        List<Book> bookList = new ArrayList<>();

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取数据库连接
            connection =  DriverManager.getConnection("jdbc:mysql:///book","root","root");

            //3.编写sql语句(实际项目中不要写*)
            String searchSql = "select * from book";
            //4.获取statement对象
            preparedStatement = connection.prepareStatement(searchSql);

            //5.执行搜索,返回ResultSet结果集
            resultSet = preparedStatement.executeQuery();
            //6.处理结果集
            while(resultSet.next()){
                Book book = new Book();
                book.setId(resultSet.getInt("id"));
                book.setBookName(resultSet.getString("bookname"));
                book.setBookPrice(resultSet.getFloat("price"));
                book.setBookPic(resultSet.getString("pic"));
                book.setBookDesc(resultSet.getString("bookdesc"));

                bookList.add(book);

            }
        } catch (Exception e) {
            //里面是使用全局的输出流,往控制台输出
            e.printStackTrace();
            //一般在项目中使用log打印,或往外层继续抛出异常
            throw new RuntimeException(e);

        }finally {
            //7.关闭资源
            try {
                if(connection!=null){
                    connection.close();;
                }
                if(preparedStatement!=null){
                    preparedStatement.close();;
                }
                if(resultSet!=null){
                    resultSet.close();;
                }
            } catch (Exception e) {
                // 里面是使用全局的输出流,往控制台输出
                // e.printStackTrace();
                // 一般在项目中使用log打印,或往外层继续抛出异常
            }
        }

        return bookList;

    }
}

测试类
package com.cheung;

import com.cheung.dao.BookDao;
import com.cheung.dao.impl.BookDaoImpl;
import org.junit.Test;

public class JdbcTest {

    @Test
    public void Test01(){
        BookDao bookDao = new BookDaoImpl();

        System.out.println(bookDao.findAll());
    }
}

测试结果

在这里插入图片描述

Memorial Day is 489 days
I miss you
xiaokeai

你可能感兴趣的:(java,java,mysql,sql,数据库)