2022年最新最全的Java零基础入门,零基础入门springboot,MySQL的学习

今天就来开始带领大家零基础入门Java开发

写在前面

为什么学习Java

Java用途很广泛,如下图所示,Java可以做很多工作

JAVA语言发展史


2019年3月,JDK12版本发布。
2019年9月,JDK13版本发布。
2020年3月,JDK14版本发布。
2020年9月,JDK15版本发布。
2021年3月,JDK16版本发布
2021年9月14日, JDK17版本发布,此版本也将作为一个LTS版本,即长期使用版本。
在这么多版本里最重要的是5,8,11,17。当然现在市面上主流的使用版本是Java8,我们第3章会将jdk8的安装。

一,IntelliJ IDEA的下载与安装

工欲善其事必先利其器,我们学习Java开发,就要先找一款合适的开发工具,现在市面上主流的Java开发工具就是IntelliJ IDEA,后面简称idea,我们先教大家如何下载并安装idea

1-1,IntelliJ IDEA软件的下载

  • 1,去官网下载
    官网地址:https://www.jetbrains.com/idea (由于是国外网址,可能打开的比较慢,如果觉得慢,可以用第2种方法,直接百度下载即可)
    进入官网以后点击Download即可

    然后根据自己的系统安装即可,window,mac,linux都有

  • 2,借助万能的百度了

1-2,软件下载好,我们就来安装了

不同电脑上安装步骤可能有些差异,下面步骤仅供参考(如果不一样,自己可以百度下安装教程,也可以跟着网上的安装教程进行安装)。

  • 1,双击安装
  • 2,点击next
  • 3,选择安装目录
  • 4,勾选

    如果你是32位的电脑,就勾选32
  • 5,安装
  • 6,等待安装
  • 7,点击finish

1-3, 安装完成,打开软件。

  • 1,点击打开软件

    如果找不到图标,就可以去常用软件找图标即可。

  • 2,选择do not import settings,然后点击ok

  • 3,同意协议,点击continue

  • 4,点击Dont send

  • 5,设置主题,直接跳过即可

二,创建简单的Java项目

2-1,创建第一个Java项目

我们这里以idea2022为例,创建一个新项目如下。

如果你是老一点的版本,创建项目如下

其实不管你是哪个版本,创建规则都是一样的,都要点New Project

然后就进入创建项目的配置流程了

我会在视频教程里具体的教会大家如何快速的配置这里的jdk

2-2,下载idea自带的jdk

在配置jdk的地方,可以直接点Download JDK

然后我们去下载最新的jdk18即可

然后耐心等待下载就行

当然了,如果你这里下载失败,或者下载的特别慢,那你可以先去看第3章的Jdk安装。

2-3,认识Java项目结构

我们这创建的是一个最简单的Java项目, 所以结构比较简单。

这里最重要的就是一个src,其他的都不重要,我视频里也有具体的每个目录的简介。

2-4,创建一个Java类

其实利用idea创建一个Java类很简单,只需要如下图所示。

然后取一个类名Demo,注意类名的首字母要大写。

创建好的一个空白的类如下

2-5,编写入口主方法main

我们Java类里要想运行,需要有一个main方法,如下图

我们所有的方法要想执行,都要写到main方法里调用,才可以执行

2-6,输出一段打印到控制台

我们用System.out来输出打印

可以看到代码里需要输出的结构都已经打印到控制台了。

三,JDK的安装

今天来教大家如何安装Java开发环境jdk,我们这里以jdk8为例。

3-1,jdk安装包的下载

目前有3种方式

  • 1,Java官网下载(可能比较慢)
    https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    因为Java官网是国外的,有些地方的同学可能下载有点慢。

  • 2,直接百度搜索jdk8安装包,如下图

    缺点就是网上东西太多太乱,不一定能找到合适的。

  • 3,石头哥在网盘里帮大家准备好了,对应的安装包

    对应的mac电脑,window电脑的32位和64位的安装包都有。如果自己实在找不到jdk安装包,可以来找石头哥拿米来换。

3-2,以window64位安装为例

  • 1,双击安装包

  • 2,点击下一步

  • 3,设置安装目录,保持默认即可,然后点击下一步。
    这里的安装路径要记牢,后面会用的到。

  • 4,然后等待安装

  • 5,安装完成,点击确定

  • 6,接着点击下一步

  • 7,接着等待进度

  • 8,安装完成

3-3,配置全局环境变量(选看)

其实我们直接在idea里学习Java了,所以配置全局环境变量就不那么重要了,这一节可以忽略,后面如果你需要用的到配置,再回来学习这一节即可。

  • 1,这里点击搜索框,然后输入cmd打开命令提示符
  • 2,命令行输入javac如果提示下面,就说明需要配置全局环境变量
  • 3,拿到自己的jdk安装目录
  • 4,打开控制面板
  • 5,然后点击高级系统配置
  • 6,点击高级,然后点击环境变量

  • 7,新建JAVA_HOME,把我们上面第3步的jdk安装目录设置到下面

  • 8,新建CLASSPATH,设置变量值,
    .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    注意前面的.表示当前目录。然后点击“确定”按钮。
  • 9,新建PATH,设置变量值,%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

    然后点击确定即可

验证是否配置成功

重新打开cmd命令行,输入javac,如果出现下面一大串提示就代表Java环境变量配置成功了。

四,Java基础语法

4-1,注释

在Java的编写过程中我们需要对一些程序进行注释,除了自己方便阅读,更为别人更好理解自己的程序,所以我们需要进行一些注释,可以是编程思路或者是程序的作用,总而言之就是方便自己他人更好的阅读。可以把注释理解为程序的说明书,如果拿你的代码给别人读,是不是有说明书了,别人才会更容易理解你的代码呢。

注释的作用

通过注释提高Java源程序代码的可读性;使得Java程序条理清晰,易于区分代码行与注释行。另外通常在程序开头加入作者,时间,版本,要实现的功能等内容注释,方便后来的维护以及程序员的交流。通俗的来讲注释主要就是为了方便别人阅读你的代码,或者方便日后自己快速回忆起来自己的代码

注释的分类

对于Java注释我们主要了解三种:
1, // 单行注释,注释一行
2, /* … / 多行注释,注释若干行
3, /**……
/ 文档注释

4-2,关键字

关键字的定义

Java语言中有一些特殊的用途的词称为关键字。关键字对Java编译器有着特殊的意义。在程序应用时一定要慎重!!!Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。

可以把关键字理解为古代皇帝的名字,都是Java系统御用的名字,后期子民再起名字的时候就不能再使用这些御用的名字了。

这些关键字没有必要记,后面的学习中,使用的多了,就能知道了。

关键字的特点

  • 关键字全部都是小写的
  • 在idea编辑器里,关键字有特殊的不一样的颜色


如上图里的public class static void 这几个关键字都是蓝色

4-3,标识符

什么是标识符

Java语言中,对于变量,常量,函数,语句块的名字,我们统统称之为Java标识符。
通俗的来讲识符就是程序员在编写 Java 程序时,自定义的一些名字。就是我们给Java程序里的类,方法,变量等取名字。

如我们的第一个Java程序里的类名,方法名都是标识符。

标识符命名的规则

  • 标识符由字母、下划线、美元符或数字组成
  • 标识符不能以数字开头
  • 不能是关键字
  • 标识符严格区分大小
  • 标识符长度无限制
  • 可以用拼音,但是不建议用汉字

其实可以理解为标识符命名和我们中国人起名字一样,比如你起名叫张三是可以的,但是没有名字叫 张3 的吧,所以Java里标识符的命名也要遵循上面的规则。

常见的命名约定

我们一般给类命名的时候使用大驼峰命名法,给方法和变量命名时使用小驼峰命名法。
就好比我们中国人起名字。带薇的一般都是女孩名,如张薇。
带伟的都是男生名,如张伟。其实就是起名字的时候一些约定成俗的东西。

4-4,数据类型

什么是数据类型

Java程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间大小不同。
数据类型的作用是指导JVM在运行程序的时候给该数据分配多大的内存空间

通俗的来讲就好比我们人可以分为不同的类别,男人女人。Java里的数据也是有自己不同的分类的。Java中的每一种数据都有自己明确的数据类型,不同的数据类型也分配的不同的内存空间,所以不同数据类型的数据大小也是不一样的。

数据类型的分类

从大的方面来讲,数据类型分为基本数据类型和引用数据类型,而基本数据类型和引用数据类型又可以具体的分为不同的类型。大家不要被这个吓到了,我们后面会具体的给大家讲解不同的类型。

我们先重点学习八种基本数据类型,引用类型在后面的章节里再慢慢学习。

计算机存储单元

我们要学习Java的数据类型之前要先简单的了解计算机的存储单元。

数据必须首先在计算机内被表示,然后才能被计算机处理。计算机表示数据的部件主要是存储设备;而存储数据的具体单位是存储单元。 我们这里只做了解就行。知道什么是位,什么是字节即可。

  • 位(Bit):是计算机中最小的信息单位。一“位”只能表示0和1中的一个,即一个二进制位,或存储一个二进制数位的单位。

  • 字节(Byte):是由相连8个位组成的信息存储单位,如下图

这样我们知道,在计算机中每八个二进制位组成了一个字节(Byte),计算机存储的最小单位就是字节,字节如下图所示

单位之间的换算如下:

八种基本数据类型

  • byte:
    byte 数据类型是8位、有符号的,以二进制补码表示的整数;
    最小值是 -128(-2^7);
    最大值是 127(2^7-1);
    默认值是 0;
    byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
    例子:byte a = 100,byte b = -50。

  • short:
    short 数据类型是 16 位、有符号的以二进制补码表示的整数
    最小值是 -32768(-2^15);
    最大值是 32767(2^15 - 1);
    Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
    默认值是 0;
    例子:short s = 1000,short r = -20000。

  • int:
    int 数据类型是32位、有符号的以二进制补码表示的整数;
    最小值是 -2,147,483,648(-2^31);
    最大值是 2,147,483,647(2^31 - 1);
    一般地整型变量默认为 int 类型;
    默认值是 0 ;
    例子:int a = 100000, int b = -200000。

  • long:
    long 数据类型是 64 位、有符号的以二进制补码表示的整数;
    最小值是 -9,223,372,036,854,775,808(-2^63);
    最大值是 9,223,372,036,854,775,807(2^63 -1);
    这种类型主要使用在需要比较大整数的系统上;
    默认值是 0L;
    例子: long a = 100000L,long b = -200000L。
    Java规定写long类型的数据时,要在值后面加一个L,"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

  • float:
    float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
    float 在储存大型浮点数组的时候可节省内存空间;
    最小值:1.4E-45
    最大值:3.4028235E38
    默认值是 0.0f;
    浮点数不能用来表示精确的值,如货币;
    例子:float f1 = 234.5f。
    Java规定写float类型的数据时,要在值后面加一个f

  • double:
    double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
    浮点数的默认类型为 double 类型;
    double类型同样不能表示精确的值,如货币;
    最小值:4.9E-324
    最大值:1.7976931348623157E308
    默认值是 0.0d;
    例子:
    double d1 = 7D ;
    double d2 = 7.;
    double d3 = 8.0;
    double d4 = 8.D;
    double d5 = 12.9867;
    7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

  • boolean:
    boolean数据类型表示一位的信息;
    只有两个取值:true 和 false;
    这种类型只作为一种标志来记录 true/false 情况;
    默认值是 false;
    例子:boolean one = true。

  • char:
    char 类型是一个单一的 16 位 Unicode 字符;
    最小值是 \u0000(十进制等效值为 0);
    最大值是 \uffff(即为 65535);
    char 数据类型可以储存任何字符;
    例子:char letter = ‘A’;。

可以汇总为下面两个图

这里注意下,我们定义整数时默认时int类型的,定义小数时默认时double类型的,知道这些后,你也就明白为什么long类型的要加L,float类型的要加f了。


数据范围从小到大的顺序,在后面讲数据类型转换的时候会用到这个顺序图。先大致有个了解即可。

4-5,变量

变量是什么

Java变量的定义:在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元被称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。

简单的说,我们可以把变量看作是个盒子,可以将钥匙、手机、饮料等物品存放在这个盒子中,也可以在需要的时候换成我们想存放的新物品。本质上来说,变量就是我们内存里的一小块区域。

如果我们把变量比作是酒店的房间,要存储的数据就好比要住宿的客人,我们可以根据客人的要求安排其入住“标准间”或者是“总统套房”,并且可以根据房间名字快速查找到入住客人的信息。同理,在 Java 程序中,我们也可以根据所需要保存的数据的格式,将其保存在指定类型的变量空间中,并且通过变量名快速定位!

通俗的讲就是可以变化的量,就好比我们的房间可以住不同的人,我们的变量可以赋不同的值。和后面要讲的常量真好对应,常量就是不可以变化的量

变量的定义

在 Java 中,我们通过三个元素描述变量:变量类型、变量名以及变量值

变量类型 变量名 = 初始化的值;
如 int a=10

这里的int就是数据类型, a就是变量名 10就是值。
所以我们前面一节讲的数据类型,主要是供变量来使用的。

变量使用的注意事项

  • 变量名不能重复
  • 变量没有赋值,不能调用
  • 变量声明是一条完整的语句,因此要以分号结尾
  • 变量赋值时long类型的要加L,float类型的要加f
  • 变量名必须是合法的标识符

还记得我们讲标识符命名约定的时候讲的小驼峰命名法吗,就是针对变量名的。

4-6,常量

什么是常量

常量就是在程序中固定不变的值,是不能改变的数据

常量在程序运行时是不能被修改的。

在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;

虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量

4-7,类型转换

类型转换的分类

  • 自动类型转换
  • 强制类型转换

第3节~手把手教你开发自己的第一个java项目(基于springboot2.2.2)

上一节带领大家成功安装的java开发工具IntelliJ IDEA,这一节就来教大家如何创建自己的第一个java项目。

所用技术

  1. jdk8(java8)
  2. springboot2.2.2

同样本节课程会配套一个视频讲解。我们每节图文教程后面都会配套一个视频讲解,方便大家更直观的学习。

话不多说,我们就来教大家如何快速创建我们的第一个java项目。

一,打开idea开发者工具

我们工具第一次打开,可能会等待几分钟。

二,点击新建项目

image

就是点击 我们上图箭头所指的 Create New Project

三,配置信息(跟着下面图片一步一步来就行)

image

image

image

image

image

到这里我们项目就创建完成了

四,认识项目结构

image

我们开发java项目的时候,只需要关心src目录和pom.xml文件即可,别的都可以先不用管。

五,创建自己的第一个java文件

image

image

名字这里你可以随便取,但是有两点要求

  1. 必须是英文或者拼音
  2. 第一个字母要大写

六,编写java代码

image

代码如下

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by qcl on 2019-06-05
 * desc:
 */
@RestController
public class Hello {
 @GetMapping("/hello")
 public String hello() {
 return "欢迎访问我的网站";
 }
} 

到这里我们的第一个java项目就成功创建了,接下来我们运行项目看下效果

七,运行项目

image

image

这里如果出现 Started DemoApplication in 3.426 seconds (JVM running for 4.769)

就代表项目成功运行起来了。

八,访问项目

我们这里在浏览器里输入下面网址

image

到这里我们就完整的实现了自己的第一个可以访问的java项目。

如果觉得图文不太好理解,请查看本专栏下一节。老师下一节会用录制视频来讲解本节课程。

本节课是《手把手带你零基础入门java开发》系列课程的一节,如果你想快速入门java开发,想开发一款属于自己的java项目,想学习springboot,想了解小程序,想了解全栈开发,想开发自己的网站,可以跟着石头哥来零基础入门。

第4节~数据库Mysql8的安装

上一节给大家讲了mysql5.7的安装,有好多同学反应,在使用5.7安装包时,最终系统却安装成了mysql8.0。这是因为现在官方也提倡我们用最新版本的,所以今天我们就再来教下大家8.0的安装。在安装8.0之前,建议大家先把之前安装的5.7卸载了。

一,安装包的下载

  • 1,官网下载
    https://dev.mysql.com/downloads/mysql/
    下载这个187M的即可

    点击 No thanks

    如果觉得官网下载有点慢,可以去我网盘里下载
  • 2,网盘下载,安装包我已经给大家放到网盘

    有买我点餐系统或者Java基础入门课程的同学,都可以获取到这个网盘链接。
  • 3,当然你也可以去百度下 mysql8安装包,去下载

注意:这里只要是8.0开头的就可以了,不管是8.0.11,8.0.18,8.0.19都可以的。

二,安装

我这里以mysql8.0.11为例,如果你电脑上有安装过mysql,记得卸载干净。

  • 1,双击安装
  • 2,勾选协议,然后点击next
  • 3,保持默认,直接点击next
  • 4,点击next,然后点击yes
    image.png
  • 5,点击Execute

    等待所有的安装成功
  • 6,全部安装通过后,点击next

    继续点击next
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XD0m26w9-1655949132461)(https://upload-images.jianshu.io/upload_images/6273713-bcb5c0ddf756fa8a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
  • 7,保持默认,点击next
  • 8,保持默认端口号
  • 9.保持默认,点击next
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0DeUJRit-1655949132463)(https://upload-images.jianshu.io/upload_images/6273713-b092253324671272.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
  • 10,设置密码,学习用的,尽量简单,设置好以后要牢牢记住,后面还会用到。
  • 11,保持默认,点击next
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wm69yAAN-1655949132464)(https://upload-images.jianshu.io/upload_images/6273713-09c172da55ab3b1e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
  • 12,点击Execute,等待校验

    校验通过,点击Finish
  • 13,点击next
  • 14,点击Finish

    点击next
  • 15,验证密码,默认的用户名是root
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iQ7Jgnq5-1655949132468)(https://upload-images.jianshu.io/upload_images/6273713-f07137efc8195563.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
    验证通过,点击next
  • 16,点击Execute

    成功后点击Finish
  • 17,点击next
  • 18,点击Finish

    到这里就安装成功了,步骤有点多,可能不同电脑上会有出入,但是大体都是一样的。

三,打开mysql并进入

两种方式,建议用第一种方式即可。如果第一种不行,再用第二种。

  • 1,mysql自带客户端。

    输入密码,成功进入
  • 2,用cmd命令行

    但是这里提示mysql不是内部或外部命令,所以我们接下来要配置mysql全局环境变量。

四,配置全局环境变量

  • 1,进入高级设置
  • 2,设置MYSQL_HOME
    把你mysql的安装目录,如我的是下面这个
    C:\Program Files\MySQL\MySQL Server 8.0\bin
  • 3,设置PATH
    在PATH里添加 %MYSQL_HOME%
    如果PATH 里已有内容,就把%MYSQL_HOME%追加进去

    如果PATH里没有内容,就新建添加,如下图
  • 4,打开cmd命令行输入mysql -V

如果能出现版本号,就代表环境变量配置完成。

五,登陆mysql

mysql -uroot -p123456
这里的root是mysql的用户名,123456是密码

第5节~IntelliJ IDEA连接Mysql8数据库,并实现可视化操作

上一节,我们讲了mysql5.7可视化操作,今天再来讲下mysql8的可视化操作,后面我们的课程,都用mysql8来讲,所以这一节很重要,一定要跟着老师一步步配置。

一,新建一个Java项目

  • 1,新建项目

    如果你是第一次打开的话,应该是这样的
  • 2,创建springboot项目



二,idea链接mysql

  • 1,如下图所示,点击最右侧的DataBase,然后点击Data Source

    然后选择mysql

  • 2,配置数据库


    如果出现下面错误

    时区错误,MySQL默认的时区是UTC时区,比北京时间晚8个小时。所以要修改mysql的时区。
    解决:
    找到mysql安装目录并进入bin文件夹,我的是安装在c盘

    然后输入cmd,回车

    输入:mysql -uroot -p123456进入mysql命令模式

    然后输入
    set global time_zone = ‘+8:00’;

    再次连接成功

    配置完后,点击下test,如果出现绿色对勾,即代表链接成功。然后点击ok

三,可视化操作数据库

  • 1,上面第二步链接成功后,我们这里就可以添加数据库,添加数据表了。

    我们执行下面sql语句,创建一个test数据库
create database test default character set utf8 collate utf8_general_ci;
  • 2,创建一个user表
    同样的执行下面sql语句,来创建一个user表
use test;
create table user
(
    id int null,
    name varchar(20) null
);

创建好以后的user表,如下图。

  • 3,添加数据
  • 4,查询数据

到这里我们就可以成功的借助idea来可视化的操作mysql8了。后面我会讲解更多Java和小程序的知识,敬请关注。

第6节~springboot+freemarker+bootstrap快速实现管理后台

我们做后台开发时,难免会要开发管理后台。如下面这样的管理后台,我们完全可以不用h5同学,自己快速开发管理web后台的。

所以接下来我会用几节来教大家如何快速实现管理后台。

本节知识点

  • springboot2.2.2
  • freemarker
  • bootstrap4
  • maven

老规矩,先看效果图

所以本节就来教大家如何快速实现管理后台表格数据的展示与操作。

这节课是建立在你已经会创建springboot项目的基础上,如果你还不知道怎么创建一个springboot项目请异步到这里:https://edu.csdn.net/course/detail/23443

好了,下面就来讲解,如何使用springboot+freemarker+bootstrap快速实现管理后台表格数据的展示。

一,首先要在你的pom.xml 加入freemarker仓库

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

二,在项目的templates目录下创建demo目录,然后创建list.ftl文件

我们freemarker使用的是 .ftl结尾的模版文件

list.ftl完整代码如下

<html>
<head>
	<meta charset="utf-8">
	<title>freemarker+bootstrap学习</title>
	<#--本地引入-->
	<#--<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">-->
	<!-- 新 Bootstrap4 核心 CSS 文件 -->
	<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.1.0/css/bootstrap
	.min.css">

</head>
<body>
<div class="container-fluid">
	<div class="table-responsive">
		<table id="dataGrid" class="table table-striped table-bordered">
			<thead>
			<tr>
				<th width="50"><input type="checkbox" class="checkall"></th>
				<th>标题</th>
				<th>姓名</th>
				<th>微信</th>
				<th width="50">操作</th>
			</tr>
			</thead>
			<tbody>
			<#list demoList as row>
				<tr>
					<td>
						<input type="checkbox" name="id" value="${row.id}">
					</td>
					<td>${row.title}</td>
					<td>${row.name}</td>
					<td>${row.wechat}</td>
					<td>
						<button class="btn btn-xs btn-primary"
								onclick="deleteRow(${row.id})">删除
						</button>
					</td>
				</tr>
			</#list>
			</tbody>
		</table>
	</div>
</div>
<script type="text/javascript">
    function deleteRow(rowId) {
        console.log("点击了删除", rowId);
    }
</script>

</body>
</html>

这里需要讲下,我们引入bootstrap有两种方式,大家学习阶段推荐用第一种方式。

  • 1,直接引入网上资源(推荐)
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.1.0/css/bootstrap
    .min.css">
  • 2,把bootstrap下载到本地,然后再引入本地
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">

三,我们页面写好了,接下来就是网页面里传数据了。

这里我们定义一个DemoController如下

package com.qcl.demo.controller;

import com.qcl.demo.bean.Demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by qcl on 2019-04-29
 * 微信:2501902696
 * desc:freemarker学习
 */
@RestController
public class DemoController {

    @GetMapping("/demoList")
    public ModelAndView list(Map<String, Object> map) {
        List<Demo> demoList = new ArrayList<>(4);
        demoList.add(new Demo(1, "标题1", "编程小石头1", "2501902696"));
        demoList.add(new Demo(2, "标题2", "编程小石头2", "2501902696"));
        demoList.add(new Demo(3, "标题3", "编程小石头3", "2501902696"));
        demoList.add(new Demo(4, "标题4", "编程小石头4", "2501902696"));
        map.put("demoList", demoList);
        return new ModelAndView("demo/list", map);
    }
}

这里我们先模拟4条数据,然后把数据传到我们的list.ftl页面,正常数据都应该是从数据库里取的,后面会做讲解。
这就是用freemarker模版的好处。可以直接在页面里使用我们的java数据。

<table id="dataGrid" class="table table-striped table-bordered">
	<thead>
	<tr>
		<th width="50"><input type="checkbox" class="checkall"></th>
		<th>标题</th>
		<th>姓名</th>
		<th>微信</th>
		<th width="50">操作</th>
	</tr>
	</thead>
	<tbody>
	<#list demoList as row>
		<tr>
			<td>
				<input type="checkbox" name="id" value="${row.id}">
			</td>
			<td>${row.title}</td>
			<td>${row.name}</td>
			<td>${row.wechat}</td>
			<td>
				<button class="btn btn-xs btn-primary"
						onclick="deleteRow(${row.id})">删除
				</button>
			</td>
		</tr>
	</#list>
	</tbody>
</table>

这样我们运行项目,然后进入web后台,就可以看到了,我们这里点击删除时,是可以拿到每行的id的,这样我们就可以根据id删除具体数据,然后再重新刷新下页面就可以了。后面会给大家讲解通过web后台操作数据库的。

到这里我们就实现了管理后台表格数据的展示与操作了,是不是很简单啊。

我会把10小时实战入门java系列课程录制成视频,如果你看文章不能很好的理解,可以去看下视频:https://edu.csdn.net/course/detail/23443

有任何关于编程的问题都可以加我微信2501902696(备注编程开发)

编程小石头,码农一枚,非著名全栈开发人员。分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑。

第7节~springboot+freemarker+bootstrap快速实现分页功能

本节是建立在上节的基础上,上一节给大家讲了管理后台表格如何展示数据,但是当我们的数据比较多的时候我们就需要做分页处理了。这一节给大家讲解如何实现表格数据的分页显示。

准备工作

还是老规矩,看效果图

可以看出我们实现了如下功能

  • 1,表格数据的展示
  • 2,分页效果的实现
  • 3,上一页和下一页的实现
  • 4,当前选中页码加重颜色

下面来看实现步骤

一,定义表格和分页组件

简单说说代码

  • head里面是引入bootstrap的样式库
  • table定义表格来展示数据
  • ul里定义分页
    代码如下:
<html>
<head>
	<meta charset="utf-8">
	<title>freemarker+bootstrap学习</title>
	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
	<!-- 新 Bootstrap4 核心 CSS 文件 -->
	<link rel="stylesheet"
		  href="https://cdn.staticfile.org/twitter-bootstrap/4.1.0/css/bootstrap.min.css">

</head>
<body>
<div class="container-fluid">
	<div class="row clearfix">
		<div class="col-md-12 column">
			<table class="table table-bordered table-condensed table-striped">
				<thead>
				<tr>
					<th>id</th>
					<th>姓名</th>
					<th>微信</th>
					<th colspan="2">操作</th>
				</tr>
				</thead>
				<tbody>

				<#list productInfoPage as productInfo>
					<tr>
						<td>${productInfo.id}</td>
						<td>${productInfo.name}</td>
						<td>${productInfo.wechat}</td>
						<td>
							<#if productInfo.id%2 == 0>
								<a href="#">下架</a>
							<#else>
								<a href="">上架</a>
							</#if>
						</td>
					</tr>
				</#list>
				</tbody>
			</table>
		</div>

		<#--分页-->
		<div class="col-md-12 column">
			<ul class="pagination ">
				<#if currentPage lte 1>
					<li class="disabled "><a class="page-link" href="#">上一页</a></li>
				<#else>
					<li>
						<a class="page-link" href="/pageList?page=${currentPage -
						1}&size=${size}">上一页</a>
					</li>
				</#if>

				<#list 1..totalPage as index>
					<#if currentPage == index>
						<li class="page-item active "><a class="page-link" href="#">${index}</a>
						</li>
					<#else>
						<li>
							<a class="page-link" href="/pageList?page=${index}&size=${size}">
								${index}</a>
						</li>
					</#if>
				</#list>

				<#if currentPage gte totalPage>
					<li class="disabled "><a class="page-link" href="#">下一页</a></li>
				<#else>
					<li>
						<a class="page-link" href="/pageList?page=${currentPage + 1}&size=${size}">下一页</a>
					</li>
				</#if>
			</ul>
		</div>
	</div>
</div>
</body>
</html>

二,定义好页面后,我们就来获取数据

同样这里的数据我们先用模拟数据,后面会用数据库里的数据。
看下面代码可以看出来,我们模拟了6条数据,然后每页显示2条数据。

package com.qcl.demo.controller;

import com.qcl.demo.bean.Demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by qcl on 2019-04-29
 * 微信:2501902696
 * desc:freemarker学习
 */
@RestController
public class DemoController {

    /*
     * 分页效果的实现
     * */
    @GetMapping("/pageList")
    public ModelAndView list(@RequestParam(value = "page", defaultValue = "1") Integer page,
                             @RequestParam(value = "size", defaultValue = "2") Integer size,
                             Map<String, Object> map) {
        List<Demo> demoList = new ArrayList<>(4);
        demoList.add(new Demo(1, "标题1", "编程小石头1", "2501902696"));
        demoList.add(new Demo(2, "标题2", "编程小石头2", "2501902696"));
        demoList.add(new Demo(3, "标题3", "编程小石头3", "2501902696"));
        demoList.add(new Demo(4, "标题4", "编程小石头4", "2501902696"));
        demoList.add(new Demo(5, "标题5", "编程小石头4", "2501902696"));
        demoList.add(new Demo(6, "标题6", "编程小石头4", "2501902696"));
        demoList.add(new Demo(7, "标题7", "编程小石头7", "2501902696"));
        int start = (page - 1) * 2;
        int end = start + size;
        List<Demo> subList = demoList.subList(start, end);
        int totalPage = (int) Math.ceil(demoList.size() / size);
        map.put("productInfoPage", subList);
        map.put("totalPage", totalPage);
        map.put("currentPage", page);
        map.put("size", size);
        return new ModelAndView("demo/list", map);
    }
}

三,启动springboot查看效果。

注意每一页地址栏的url



可以看出,我们第一次访问时,默认显示第一页,url里没有page和size字段。
访问第2页和第3页时,url里就有了page和size。page是显示那一页,size是每页显示多少条数据。
到这里我们就实现的管理后台的分页效果。

我会把10小时实战入门java系列课程录制成视频,如果你看文章不能很好的理解,可以去看下视频:https://edu.csdn.net/course/detail/23443

有任何关于编程的问题都可以加我微信2501902696(备注编程开发)

编程小石头,码农一枚,非著名全栈开发人员。分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑。

猜你喜欢

转载自blog.csdn.net/qiushi_1990/article/details/125421408