Spring+SpringMVC+Mybatis+PostgreSQL+Bootstrap+jQuery+AJAX 【实现前后端分离增删改查】

PostgreSQL

1.PostgreSQL的简介

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。

POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。

PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。

另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

2.主要特点

2.1 PostgreSQL 的 主要优点如下:

1)维护者是PostgreSQL Global Development Group,首次发布于1989年6月。

2)操作系统支持WINDOWS、Linux、UNIX、MAC OS X、BSD。

3)从基本功能上来看,支持ACID、关联完整性、数据库事务、Unicode多国语言。

4)表和视图方面,PostgreSQL支持临时表,而物化视图,可以使用PL/pgSQL、PL/Perl、PL/Python或其他过程语言的存储过程和触发器模拟。

5)索引方面,全面支持R-/R+tree索引、哈希索引、反向索引、部分索引、Expression 索引、GiST、GIN(用来加速全文检索),从8.3版本开始支持位图索引。

6)其他对象上,支持数据域,支持存储过程、触发器、函数、外部调用、游标7)数据表分区方面,支持4种分区,即范围、哈希、混合、列表。

8)从事务的支持度上看,对事务的支持与MySQL相比,经历了更为彻底的测试。

9)My ISAM表处理方式方面,MySQL对于无事务的MyISAM表,采用表锁定,1个长时间运行的查询很可能会阻碍对表的更新,而PostgreSQL不存在这样的问题。

10)从存储过程上看,PostgreSQL支持存储过程。因为存储过程的存在也避免了在网络上大量原始的SQL语句的传输,这样的优势是显而易见的。

11)用户定义函数的扩展方面,PostgreSQL可以更方便地使用UDF(用户定义函数)进行扩展。

2.2 PostgreSQL 的 应用劣势如下:

1)最新版本和历史版本不分离存储,导致清理老旧版本时需要做更多的扫描,代价比较大但一般的数据库都有高峰期,如果合理安排VACUUM,这也不是很大的问题,而且在PostgreSQL9.0中VACUUM进一步被加强了。

2)在PostgreSQL中,由于索引完全没有版本信息,不能实现Coverage index scan,即查询只扫描索引,不能直接从索引中返回所需的属性,还需要访问表,而Oracle与Innodb则可以。

3 存储系统

存储系统是PostgreSQL的最底层模块,它向下通过操作系统接口访问物理数据,向上为上层模块提供存储操作的接口和函数。PostgreSQL对物理数据的访问和操作都是通过其存储系统模块来进行的。

3.1 PostgreSQL存储系统是由以下几个子模块所构成的:

1)页面管理子模块:对PostgreSQL缓冲区页面的组织结构进行定义以及提供页面操作的方法。

2)缓冲区管理子模块:管理PostgreSQL的缓冲区,包括本地缓冲区和共享缓冲区。

3)存储设备管理子模块:数据库记录是存储在存储介质上的,存储设备管理子模块将屏蔽不同物理存储设备(块设备,流设备)接口函数的差异,向上层缓冲区管理子模块提供统一的访问接口函数。

4)文件管理子模块:一般的操作系统对一个进程允许打开的文件数是有限制的,而PostgreSQL服务器有些时候需要打开的文件数是很多的,因此PostgreSQL文件管理子模块自身为了突破这个瓶颈,封装了文件的读写操作,在这里建立了一个LRU链表,通过一定的替换算法来对打开的文件进行管理,使得可以打开的文件数目不受操作系统平台的限制。

4 PGSQL的数据类型有哪些?

PGSQL主要有三种类型的数据:数值类型、字符串类型、时间\日期

5 安装说明

6 PostgreSQL与java的交互

6.1 准备工作

通过eclipse工具,新建Maven项目:

添加:postgresql的jar包

修改pom.xml文件:

<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
	<dependency>
	    <groupId>org.postgresql</groupId>
	    <artifactId>postgresql</artifactId>
	    <version>42.2.2</version>
	</dependency>

6.2 PostgreSQL与java的第一个例子

package com.rj.bd;

import java.sql.Connection;
import java.sql.DriverManager;

/**
* @desc Java通过JDBC连接到PostgreSQL数据库
* 
* @author TianShuo
* 
* @version 2021年4月18日 下午6:17:19
*/
public class PostgreSqlJdbcConn {
   

	public static void main(String[] args) {
   
		   Connection c = null;
		      try {
   
		         Class.forName("org.postgresql.Driver");
		         c = DriverManager
		            .getConnection("jdbc:postgresql://localhost:5432/school",
		            "postgres", "root");
		      }
		      catch (Exception e) 
		      {
   
		         e.printStackTrace(); 
		         
		         System.err.println(e.getClass().getName()+": "+e.getMessage());
		         System.exit(0);
		      }
		      System.out.println("已经打开的连接");

	}
}

6.2 PostgreSQL与java的查询

package com.rj.bd;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
* @desc Java通过JDBC连接到PostgreSQL数据库【查询】
* 
* @author TianShuo
* 
* @version 2021年4月18日 下午6:30:11
*/
public class PostgreSqlJdbcConnSelectDatas {
   
	public static void main(String[] args) {
   
		Connection c = null;
		Statement stmt = null;
		try {
   
			//1.创建连接
			Class.forName("org.postgresql.Driver");
	         c = DriverManager
	            .getConnection("jdbc:postgresql://localhost:5432/school",
	            "postgres", "root");
			c.setAutoCommit(false);
			System.out.println("连接数据库成功!");
			//2.获取连接
			stmt = c.createStatement();
			
			ResultSet rs = stmt.executeQuery("select * from student");//3.执行sql语句
			//4.打印结果
			while(rs.next())
			{
   
				String s_id = rs.getString("s_id");
				String s_name = rs.getString("s_name");
				System.out.println(s_id + "\t" + s_name  );
			}
			//5.关闭连接
			rs.close();
			stmt.close();
			c.close();

 
		} catch (Exception e) {
   
			e.printStackTrace();
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
			System.exit(0);
		}
	}
}

6.3 postgreSQL与java的添加

package com.rj.bd;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
* @desc Java通过JDBC连接到PostgreSQL数据库【 插入数据】
* 
* @author TianShuo
* 
* @version 2021年4月18日 下午6:24:24
*/
public class PostgreSqlJdbcConnAddDatas {
   
	public static void main(String[] args) {
   
		Connection c = null;
		Statement stmt = null;
		try {
   
			Class.forName("org.postgresql.Driver");
	         c = DriverManager
	            .getConnection("jdbc:postgresql://localhost:5432/school",
	            "postgres", "root");
			c.setAutoCommit(false);
 
			System.out.println("连接数据库成功!");
			stmt = c.createStatement();
 
			String sql = "INSERT INTO student (s_id,s_name,c_id) "
					+ "VALUES ('s006', '杰克', 'c001' );";
			stmt.executeUpdate(sql);
 
			 sql = "INSERT INTO student (s_id,s_name,c_id) "
					+ "VALUES ('s007', '詹姆斯', 'c003' );";
			stmt.executeUpdate(sql);
 
			sql = "INSERT INTO classes (c_id,c_name) "
					+ "VALUES ('c004','4号教室');";
			stmt.executeUpdate(sql);
 
			stmt.close();
			c.commit();
			c.close();
 
		} catch (Exception e) {
   
			e.printStackTrace();
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
			System.exit(0);
		}
		System.out.println("新增数据成功!");
	}
}

6.4 PostgreSQL与java的删除

package com.rj.bd;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
* @desc Java通过JDBC连接到PostgreSQL数据库【删除数据】
* 
* @author TianShuo
* 
* @version 2021年4月18日 下午6:40:35
*/
public class PostgreSqlJdbcConnDeleteData {
   
	public static void main(String args[]) {
   
		Connection c = null;
		Statement stmt = null;
		try {
   
			//1.创建一个连接
			Class.forName("org.postgresql.Driver");
	         c = DriverManager
	            .getConnection("jdbc:postgresql://localhost:5432/school",
	            "postgres", "root");
			c.setAutoCommit(false);
			//2.获取一个连接
			System.out.println("连接数据库成功!");
			stmt = c.createStatement();
 
 
			//3.执行sql 语句
			String sql = "Delete from student where  s_id = 's005' ";
			stmt.executeUpdate(sql);
			c.commit();
			
			//4.打印结果
			ResultSet rs = stmt.executeQuery("select * from student");
			while(rs.next())
			{
   
				String s_id = rs.getString("s_id");
				String s_name = rs.getString("s_name");
				System.out.println(s_id + "\t" + s_name  );
			}
			//5.关闭连接
			rs.close();
			stmt.close();
			
			c.close();
 
		} catch (Exception e) {
   
			e.printStackTrace();
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
			System.exit(0);
		}
		System.out.println("删除数据成功!");
	}

}

6.4 PostgreSQL与java的修改

package com.rj.bd;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
* @desc Java通过JDBC连接到PostgreSQL数据库 【更新数据】
* 
* @author TianShuo
* 
* @version 2021年4月18日 下午6:33:51
*/
public class PostgreSqlJdbcConnUpdateData {
   
	public static void main(String[] args) {
   
		Connection c = null;
		Statement stmt = null;
		try {
   
			//1.创建连接
			Class.forName("org.postgresql.Driver");
	         c = DriverManager
	            .getConnection("jdbc:postgresql://localhost:5432/school",
	            "postgres", "root");
			c.setAutoCommit(false);
			System.out.println("连接数据库成功!");
			//2.获取连接
			stmt = c.createStatement();
			
			//3.提交sql 语句
			String sql = "UPDATE student set s_name = '测试修改功能' where s_id = 's005' ";
			stmt.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

708483

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值