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

时间: 2024-11-08 21:45:35

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

jdbc查询sybase参数过多问题

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

Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)

Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子 时间:2012-11-20 17:54:02 在JDBCPreparedStatement.executeQuery().getMetaData();后,我们可以通过ResultSetMetaData对象查询返回结果集的源数据信息,也就是表结构信息. 示例代码如下: package astar.sutil.db; import java.sql.Connection; import java.sql.Driv

spring jdbc查询 依赖JdbcTemplate这个类模版封装JDBC的操作

1 package cn.itcast.spring.jdbc; 2 3 import java.util.List; 4 5 import org.springframework.jdbc.core.support.JdbcDaoSupport; 6 7 public class PersonDao extends JdbcDaoSupport{ 8 public void update(){ 9 this.getJdbcTemplate().execute("update person se

JDBC查询实例

作为Java与数据库交互最古老的.最基础的规范,JDBC提供了访问底层数据库的接口,其他ORM框架都是在JDBC这块基石上构建的.下面我们看一个基本的JDBC查询例子: package com.inspur.chinanet.point.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import jav

9.1(JDBC概述)、(JDBC连接数据库),(JDBC查询数据)

2:JDBC的配置 下载地址:https://dev.mysql.com/downloads/file/?id=470333 这里下载到了C:\Users\王家丰\AppData\Local\Microsoft\Windows\INetCache\IE\Z2F72PPH\mysql-connector-java-5.1.42 3:JDBC连接数据库的步骤 一:注册mysql驱动:两种方式 项目中用的方式:Class.forName("com.masql.jdbc.Driver"); 二

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