JDBC连接数据库基础(一)

JDBC连接数据库基础(一)

2019年第一篇博客,祝CSDN的各位IT同好新年快乐

  徒弟最近在学Java EE,奈何老师节奏太快,进度跟不上,就在这里给他讲讲基础的数据库增删改查(CURD)实现,助力后期的框架学习。

这篇博客会以下几点由浅入深的介绍:

  • 数据库的选择
  • 数据库表设计 和 实体类JavaBean构建
  • 基本的数据库增长改查操作
  • Java对Sql注入的处理办法
  • 使用反射实现自动注入
  • 数据库连接池和配置文件

一、数据库的选择

  • 数据库的分类

数据库,顾名思义,就是用来存储数据的地方,我们可以对数据进行增、删、改、查操作。按照数据存储结构的不同,可以分为关系型数据库非关系型数据库
关系型数据库 通常就是以表的形式存储数据,表与表之间互相关联,形成一个庞大的数据体系。因为关联的存在,使得对应复杂查询的处理变得更加方便。关系型数据库还支持事务处理,让数据库的操作更加的安全。
主流的关系型数据库有:Orcale、Mysql、SQL Server、SQLite
非关系型数据库 数据存储结构比较灵活,一般是以键值对的形式存储数据,还可以是文档形式、图片形式等。非关系型数据库可将数据存储在内存中,支持分布式,相比于关系型数据库具有更加高效的数据读写效率。缺点是不支持sql、学习成本高、难以处理复杂的查询。
主流的非关系型数据库有 :Redis、MongDB
本文我们只谈关系型数据库

  • 数据库 及 数据库工具

对关系型数据库来说,使用的SQL语句基本都差不多,只有很小的一部分差异,所以只需要学会其中一种数据库的SQL语句写法,再看一看它们的区别,就可以书写所有关系型数据库的SQL语句,基本的增删改查就会了。目前用的最多的就是Orcale旗下的Oracle和Mysql这两款数据库了。两者区别这里就不赘述了,最大的区别就是,mysql免费,Orcale收费(但可以破解),孰强孰弱显而易见。
转:–Mysql和Orcale数据库的差异
转: –具体Mysql和Orcale语句的区别
orcale数据库和mysql数据库的安装看下面的帖子,很详细,具体的版本根据项目而定,我们这里学习就选用5.7和11g
转: –mysql 5.7 安装教程
转: –orcale 11g安装教程
数据库图形化界面工具,考虑到数据库和软件的兼容性,一般mysql选用Navcat,Orcale选用PLSQL,百度就能下载,安装就是普通的应用软件的安装,需要破解,有空我会上传个百度云在这。

二、数据库表设计 和 实体类JavaBean构建

  • 数据库表设计

下面我们使用一个小例子来讲一讲,因为我们这里的重点是增删改查,就直接用工具创建表了,建表sql不去赘述,以mysql为例。

新建连接

首先打开我们安装好的Navcat,我们新建一个连接,连接的作用是帮我们记住数据库的路径和密码等,避免每次都要输入。
JDBC连接数据库基础(一)_第1张图片
输入连接名数据库url(mysql数据库端口号没修改的话默认为3306,Orcale默认为1521)和 用户名密码。输入完之后测试一下,看是否能连接上
JDBC连接数据库基础(一)_第2张图片
测试正常后,点击确定,完成连接的创建。我们可以在左侧看到我们新建的连接,下次我们再使用,就直接双击,不需要重复输入了。

新建数据库

接下来,双击连接,连接成功后可以看到这个连接中的数据库列表.选中连接,右键,新建一个数据库,字符集一般选用国际编码 utf8,排序规则使用默认的general_ci
JDBC连接数据库基础(一)_第3张图片
数据库创建完成可以展开菜单,看到左侧如下JDBC连接数据库基础(一)_第4张图片
我们可以在数据库里操作视图查询触发、甚至像java一样书写函数,这里我们只关心 查询

新建表

选择,创建我们的第一张表,选中左侧菜单的,右键或者点中间都可以
在这里插入图片描述
我们先建立一个班级表 class,字段添加的方法如下:
JDBC连接数据库基础(一)_第5张图片
JDBC连接数据库基础(一)_第6张图片

值得一提的是,主键非空且主键唯一,如果设置一个字段为主键,那表示这个字段为not null,并且值不能重复。自动增长意味着这个字段无需赋值,会自动增加1

字段添加完成后,保存并给表命名。
同理,我们再建立一个学生表 student
JDBC连接数据库基础(一)_第7张图片

可以看到,我们这张表使用了一个class_id,将student表和class表关联了起来

添加数据

表创建完成后,可在左侧的菜单栏看到,双击它,让我们为表添加一些数据。
添加完一条数据后,可选择最下方的 +v 选择继续添加或者结束添加
JDBC连接数据库基础(一)_第8张图片
JDBC连接数据库基础(一)_第9张图片

数据查询

选中左侧的查询,右键新建一个查询,书写sql,查看运行结果。每个sql之间使用分毫分隔,注意标点不要使用中文字符
JDBC连接数据库基础(一)_第10张图片

  • JavaBean的创建

本例使用Java web项目来演示,开发工具使用eclipse或者idea都一样,这里以eclipse为例。有时间的话后面会升级成javaweb项目。
打开Ecipse,新建一个 Dynamic Web Project
JDBC连接数据库基础(一)_第11张图片
输入项目名称后,全部默认选next,在最后勾选 Generate web.xml xxxx,这会为你自动生成一个web.xml文件,我们可以在这里面指定web项目的首页、error页面等。
JDBC连接数据库基础(一)_第12张图片
在src文件夹下面创建package目录如下:
JDBC连接数据库基础(一)_第13张图片

这里dao包用来存放数据访问的类,domain包用来存放实体类,util包用来存放工具类,test包用来存放测试用的类,servlet包用来处理页面转发、跳转等

这里可调整目录视图,方便查看
JDBC连接数据库基础(一)_第14张图片
我们为student表和class表创建实体类,注意字段命名,要求与数据库完全一致,对于像class_id这种多个单词的命名,采用Java的驼峰命名法 classId。

Student类
package com.zx.domain;

public class Student {
	
	private int id ; //学生id
	private String name;  //学生姓名
	private int age;	//年龄
	private int classId;	//班级id  驼峰命名法
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getClassId() {
		return classId;
	}
	public void setClassId(int classId) {
		this.classId = classId;
	}
		
}
Class类
package com.zx.domain;

public class Class {
	private int id;			//班级id
	
	private String name;   //班级名称

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

至此,实体类建立完毕。

你可能感兴趣的:(java)