31 jdbc查询,javaBean引入

jsbc 数据库的查询

与增删改不一样,查询会返回具体的记录集合,我们使用ResultSet类的实例来接收,接收后,使用实例.next()获取下一条记录,使用对应的getInt()、getDouble()方法来获取一条记录对应的字段值。如下:

关键代码:

conn = DriverManager.getConnection(url,username,password);
			//3.设置自动提交设置为false
			conn.setAutoCommit(false);
			//3.获取sql命令对象
			stmt = conn.createStatement();
			//4.创建SQL命令
			String sql2 = "select * from emp";
			//5.执行SQL命令
			ResultSet executeQuery = stmt.executeQuery(sql2);
			while(executeQuery.next()) {
				System.out.println(executeQuery.getInt("empno")+"\t"+executeQuery.getString("ename")+"\t"+executeQuery.getString("job")+"\t\t"+executeQuery.getInt("mgr")+"\t"+executeQuery.getDate("hiredate")+"\t"+executeQuery.getDouble("sal")+"\t"+executeQuery.getDouble("comm")+"\t"+executeQuery.getInt("deptno"));
			}

  

结果:

引入javaBean

在上面的例子中,我们可以知道,返回的对象中包含了不同类型的对象,为了规范这些对象,我们获取的结果抽象为一个类,将结果封装到类的实例里,在这个例子中,我们查询的是emp表,emp就是员工表。

于是我们创建一个javaBean包,包里面用来存放javaBean类,它们只有属性,无参构造方法和getter/setter,这里对应emp我们创建一个Employee类(不能是复数形式)。

注意:最好实现序列化

package cn.xiaohei.bean;

import java.io.Serializable;
import java.sql.Date;

public class Employee implements Serializable{
	private static final long serialVersionUID = 1L;
	int eid;
	String name;
	String job;
	int mgr;
	Date edate;//入职日期
	double sal;
	double comm;
	int deptno;//部门编号

	public Employee(int eid, String name, String job, int mgr, Date edate, double sal, double comm, int deptno) {
		super();
		this.eid = eid;
		this.name = name;
		this.job = job;
		this.mgr = mgr;
		this.edate = edate;
		this.sal = sal;
		this.comm = comm;
		this.deptno = deptno;
	}

	public Employee() {

	}

	public int getEid() {
		return eid;
	}
	public void setEid(int eid) {
		this.eid = eid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public int getMgr() {
		return mgr;
	}
	public void setMgr(int mgr) {
		this.mgr = mgr;
	}
	public Date getEdate() {
		return edate;
	}
	public void setEdate(Date edate) {
		this.edate = edate;
	}
	public double getSal() {
		return sal;
	}
	public void setSal(double sal) {
		this.sal = sal;
	}
	public double getComm() {
		return comm;
	}
	public void setComm(double comm) {
		this.comm = comm;
	}
	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}

	@Override
	public String toString() {
		return "Employee [eid=" + eid + ", name=" + name + ", job=" + job + ", mgr=" + mgr + ", edate=" + edate
				+ ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + "]";
	}
}

  

接下来,我们就可以修改上面的代码,将查询到的结果封住为Bean实例,然后,存放到一个数据结构中,通常我们选择ArrayList。

修改上面代码:

	ArrayList<Employee> list = new ArrayList<>();
			while(executeQuery.next()) {
				Employee emp = new Employee();
				emp.setEid(executeQuery.getInt("empno"));
				emp.setName(executeQuery.getString("ename"));
				emp.setJob(executeQuery.getString("job"));
				emp.setMgr(executeQuery.getInt("mgr"));
				emp.setEdate(executeQuery.getDate("hiredate"));
				emp.setSal(executeQuery.getDouble("sal"));
				emp.setComm(executeQuery.getDouble("comm"));
				emp.setDeptno(executeQuery.getInt("deptno"));
				list.add(emp);
			}

  

原文地址:https://www.cnblogs.com/Scorpicat/p/12313766.html

时间: 02-15

31 jdbc查询,javaBean引入的相关文章

jdbc查询sybase参数过多问题

公司的数据库一直是sybase,用起来也挺好的,最新客户现场出现一个问题,数据无法传输了,看日志非常简单,一下就定位到了原因. 很简单,参数超过了2000个,因为这个功能是根据主表的主键查询子表,方法用的是where 主表id in (?,?,?,?--)方式,参数问号最多是是2000个,不过这就奇怪了,直接使用sql查询sybase,5000个参数也没问题,看来是jdbc驱动的问题了. 我们公司用sybase也有十多年了,这方面还是很有研究的,请教了几个人,jdbc连接sybase的驱动之前用

JDBC查询指定条件的数据

使用select语句的条件查询,需要用到where子句. 1 package qddx.JDBC; 2 import java.sql.*; 3 public class QueryById { 4 5 public bbsVo QuerybbsVoById(int id){ 6 bbsVo vo = null; 7 Connection conn = null; 8 PreparedStatement pst = null; 9 ResultSet rs = null; 10 try{ 11

JDBC查询数据库中的数据

只用JDBC技术查询表中的全部内容时,需要使用查询全部的SQL语句,把查询结果放到List集合中. 1 package qddx.JDBC; 2 import java.util.*; 3 import java.sql.*; 4 //查询操作 5 public class Query { 6 7 public List<bbsVo> showBBS(){ 8 Connection conn = null; 9 Statement st = null; 10 ResultSet rs = nu

Lucene4.2源码解析之fdt和fdx文件的读写——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压

前言 通常在搜索打分完毕后,IndexSearcher会返回一个docID序列,但是仅仅有docID我们是无法看到存储在索引中的document,这时候就需要通过docID来得到完整Document信息,这个过程就需要对fdx/fdt文件进行读操作.为了更清楚地了解fdx/fdt文件的作用,本文把fdx/fdt文件的读和写整合到了一起,尽管这在Lucene中是两个分开的过程. 1. 索引生成阶段 索引生成阶段包含着一个复杂的过程,所以了解本文前最好对Lucene的索引架构有一定的了解,可以参考博

关于MySQL中存储类型为Float,使用jdbc查询时丢失精度,或者自动四舍五入的问题

一.   mysql表结构: member_price列的数据类型是float(20,2)(注: 表示最多20位浮点数,精度为2位) 插入记录: INSERT INTO `member_price` (`id`, `data_type`, `month`, `member_count`, `member_price`, `create_at`) VALUES ('1', '1', '2015-11', '5864', '1765910.8745120', '1450078966586'); IN

JDBC与javaBean知识

1.JDBC的概念: Java数据库连接技术(Java DataBase Connectivity)能实现java程序对各种数据库的访问,由一组使用java语言编写的类和接口(jdbc api)组成,他们位于java.sql以及javax.sql中. 2.JDBC API 使用JDBC访问数据库就要用JDBC API完成3件事:与数据库链接,返送sql语句和处理结果. Java应用程序可以使用java.sql和javax.sql包中的JDBC APL来链接和操作: 工作的4个重要环节: (1).

spring JavaBean引入JavaBean ( 外部引用, 内部定义, 级联属性 )

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.or

JDBC查询和mysql连接

package lianxi1; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.HashMap; import java.util.Map; import org.junit.Test; public class JdbcTest { @Test public

JDBC的引入及mysql的引入

一.JDBC概念的引入 JDBC是一套接口,实现类是jar包(由提供数据库厂商提供) 完全不关心实现类的内容.只关心接口的方法(也就是只关心JDBC) 二.mysql的引入,绿色包下载 https://www.oracle.com/index.html 下载网址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-winx64.zip 修改密码的命令:alter user 'root'@'localhost' identified

JDBC学习笔记——利用反射及JDBC元数据编写通用的查询方法

我们的查询操作,对于不同的数据表examstudent和customers,会有不同的代码编写过程,利用反射和JDBC元数据可以编写通用的方法进行对不同数据表的查询. 在此之前我们是这样做的: 查询customers表中的字段以及字段值: 1 public Customer getCustomer(String sql, Object... args) { 2 Customer customer = null; 3 Connection connection = null; 4 Prepared