更多的程序员文章收录在
更详细的MAVEN的讲解见这篇: 大量的参数,配置项
文章目录
数据库是项目开发的关键。不管是JAVA,还是C#还是PHP都要接触后端数据库,mysql 是一项大学生必须掌握的技能与学科。
JAVA毕设项目一般所使用的技术
所以,学习东西要系统一些,如果基本功不够,那后面的技术就会学的很浮。
可以略过或浅尝辄止的技术
这个图中:看上去是过渡技术但是事实上在工作中用不到的:
springBoot里的技术本来就很多了,如果一股脑的扎进来,那有可能是撞的一头的包。
- 无页面的 SpringBoot 的类的注入,配置等技术。(简单地过一遍就好)
- JPA 技术 看上去应用面更多,但是问题是当大厂小厂都要求Mybatis 之后,其实JPA没有意义,小厂会使用Mybatis Plus 要注意的是这个并不是Mybatis 的升级,这只是Mybatis 的国内的再一次封装。
- jdbc Template 这个是为了适应更多的数据库,如果项目中使用了国内的数据库,那么很有可能会用到这个技术,其它的项目,0.1%的可能用得到。
- Thymeleaf 技术。非前后端分离,而且还是在国产的前后端分离完全流行之后,spring团队推出来的技术。在国内一点市场没有,在国外,可能市场不少。
最最典型的就是使用layui 也是前后端分离,非VUE。
基于Spring Boot的大学宿舍管理系统【大作业及毕设项目】
还有就是使用VUE做前端的,
那项目就多了,可以说是遍地都是。项目的总目录文章如下:
JAVA项目环境必知必会–【大作业及毕设项目】
环境及工具:
JAVA环境及工具:
本系列环境
环境 | win11 | 安装博文 | B站视频地址 |
---|---|---|---|
工具 | idea 2020 | Idea2020安装详解以及JAVA项目技术讨论-【JAVA环境】 | 【JAVA环境】介绍IDEA 2020的下载以及安装 |
jdk | JDK1.8 | JDK安装详解以及JAVA项目技术讨论-【JAVA环境】 | 【JAVA环境】jdk安装及配置 |
数据库 | mysql5.5 | mysql安装超详细步骤(保姆级教程)以及JAVA项目技术讨论-【mysql数据库】 | |
maven | 3.6.0 | Maven安装超详细步骤(保姆级教程)以及ANT讲解 | 【JAVA环境】tomcat,Maven安装与配置 |
WEB服务器 | tomcat | tomcat安装超详细步骤(保姆级教程) | 【JAVA环境】tomcat,Maven安装与配置 |
数据库前端工具 | mysql-front | ||
数据库前端工具 | navicat | ||
其它 | lombok(低版本的idea上需要) | 【JAVA环境】在idea里碰到get/set编译的错误(lombok安装) |
数据库前端工具:mysql-front (navicat 也可以)
主要是这些跟PHPStudy 2018 整合了,所以有的时候懒的打开navicat
关于环境的重要性,直接看上面的《SpringBoot 的项目编译即报错处理–JSB系列之001》
数据库前端工具:mysql-front (navicat 也可以)
主要是这些跟PHPStudy 2018 整合了,所以有的时候懒的打开navicat
关于环境的重要性,直接看上面的《SpringBoot 的项目编译即报错处理–JSB系列之001》
如果基础不牢,要回避的知识
假定,你在学校做过了JAVA的小项目了。(我指的是swing,servlet 之类) 可能会点SSM,也可能不会,那我马上就要毕业了,我得搞项目,搞毕设呀。啊!!!
- 第一个要回避的就是JWT。
- 上面的不使用了,shiro 也就不需要了
- 然后是redis
说一下理由。第一,你一个人使用的系统,你用啥JWT?Session. cookie , JWT 都是你一个人在用。完全不存在用户信息泄漏。
单点登录就更用不上了。一共就一个系统。
redis 也不需要,别说你一个人在使用,就是全班的人都在使用50人在线,redis 的优势也自不出来。mysql 数据库连这一点点的数据都不能快速响应,那PHP的平台的不是要直接宕机?而且mybatis 本身还有缓存。
当然了,这是指你自己要把代码弄懂的这个前提下说的。
但是问题是开源项目是别人的运行好的。那用啥环境也不是你能决定了,是吧?
我说的是如果:
你能选择的话,那你的JAVA毕设用JAVASpringBoot+layui + 微信小程序
这样跑的又轻松,又紧跟时代潮流,学起来也快。
Maven版本
总之一句话,maven 3.6 版本,足够你整个大学生活。
先要说ant .
Ant是一个构建工具,它可以帮助我们将项目开发过程中需要完成的各种步骤组织起来,通过一个简易的方式来构建整个项目。
一些典型的任务是:编译Java源代码、运行java程序、拷贝文件或目录、将编译完成的类打包等等。
2.1 Ant的下载安装
到Ant官网下载最新的Ant,这里下载是apache-ant-1.9.7-bin.zip
下载完成后解压,这里解压到D:\apache-ant
2.2 配置环境变量
新建环境变量:ANT_HOME:D:\apache-ant
进入cmd命令窗口,在CMD窗口中输入ant -version,敲击回车键,会显示出安装的ANT版本,说明配置成功了
简单Ant编译示例
首先在D:\plugins-git盘下建立一个build.xml文件,内容如下:
<?xml version="1.0"?>
<project name="helloWorld">
<target name="sayHelloWorld">
<echo message="Hello,Amigo"/>
</target>
</project>
进入xml文件路径,运行ant sayHelloWorld,如下:
maven
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven的主要目标是允许开发人员理解完整的 在最短的时间内完成开发工作。简化构建过程,提供统一的构建系统,提供高质量的项目信息,鼓励更好的发展做法。 [4]
Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表 1 所示。 [1]
说明 | Maven | Ant |
---|---|---|
标准构建文件 | project.xml 和 maven.xml | build.xml |
特性处理顺序 | ${maven.home}/bin/driver.properties ${project.home}/project.properties ${project.home}/build.properties ${user.home}/build.properties 通过 -D 命令行选项定义的系统特性 最后一个定义起决定作用。 | 通过 -D 命令行选项定义的系统特性 由 任务装入的特性 第一个定义最先被处理。 |
构建规则 | 构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。 | 构建规则或多或少是静态的,除非使用 |
Apache Maven是一个(特别是Java编程)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当使用Maven的时候,用一个明确定义的项目对象模型来描述项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的管理项目报告,生成站点,管理JAR文件,等等。
常用命令
mvn archetype:generate 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类
Maven安装详解
其实,下载了之后,直接放在目录就可以了。
我一般在放在D:\java 的这个目录下面。
1.下载安装程序
其中tomca Maven 也可以用预置目录的自解压文件
https://download.csdn.net/download/dearmite/90689660
B站上面也有视频教你一步步的安装。
【JAVA环境】tomcat,Maven安装与配置
也可以自行去官网:
从 Apache Maven 官网或者阿里云镜像站下载 Maven 的二进制包。这里建议使用阿里云镜像站(https://mirrors.aliyun.com/apache/maven/maven-3/3.9.5/binaries/?spm=a2c6h.25603864.0.0.3194121eu7SXqa)。
当然,镜像就有失效的可能。
2.压缩包下载成功后解压到指定目录,这里以3.9.5版本为例
3.新建maven仓库
(就是找一个D盘的空目录用来放maven 下载的JAR包)
随着项目的增多,这个目录可能会增长到10G以上。
修改环境变量(要注意的是这个修改就算是用idea 也是起作用)
注意:(由于 Maven 是用 Java 编写的,因此需要先安装 JDK)
1.找到settings.xml文件,使用记事本或VSCode打开
2.找到localRepository,添加maven仓库路径,并复制到注释外使其生效
3.阿里云镜像站链接
找到mirrors,添加阿里云镜像
看上去是不是很复杂?
对于初学者是不是不友好?
这就是我为什么让你下载我上传到CSDN里面的文件的原因了。
因为我把settings.xml 修改好了。
2.配置环境变量
当然, 通常情况下,idea 里使用自己的m2_home目录。并不需要验证配置。
右击此电脑–>属性–>高级系统设置–>环境变量(不熟悉的参照一下)
因为安到maven 的同学,肯定都是安过JDK 的
mysql安装超详细步骤(保姆级教程)以及JAVA项目技术讨论-【mysql数据库】
或者:
JDK安装详解以及JAVA项目技术讨论-【JAVA环境】
(1)新建系统变量,变量值是自己安装maven的根目录
(2)找到path编辑添加如下内容
3.验证是否成功(关键步骤!)
一定要验证,以免在以后的idea使用中有问题,
当然, 通常情况下,idea 里使用自己的m2_home目录。并不需要验证配置。
打开新的命令行窗口(一定要新开!),输入:
mvn -v
出现类似以下信息说明成功:
4.idea 里配置(关键步骤!)
B站地址:
https://www.bilibili.com/video/BV19uE3zDEiL/
安装总结:
下载我的CSDN里的那个配置文件修改好的。
然后,按着B站视频配置就可以了。
B站地址: 4分50秒处
https://www.bilibili.com/video/BV19uE3zDEiL/
MAVAN 项目目录结构:
目录结构
src/main/java:存放主程序代码。
src/main/resources:存放配置文件。
src/test/java:存放测试代码。
src/test/resources:存放测试配置文件。
target:构建过程中生成的文件(需要运行代码,产生编译文件,后才会出现)。
生命周期
Maven 的生命周期包括 Clean、Default 和 Site 三个部分,涵盖了从清理到构建、测试、打包、安装和部署的全过程。
项目里可能要用到的技术
前后端分离
这是一个好技术。前后端分离的主要概念就是:后台只需提供API接口,前端调用AJAX实现数据呈现。 现状与分歧. 作为一名前端开发人员,我们应该尝试一些新颖的技术,完善每一个细节,后端的开发人员就无脑疯狂的输出json。
在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端。
难不难工作量是不一定,但是,两边的难度是真的降了。
后端的只用idea community IDEA社区版(Community)版本就足够。前端高级的玩玩webStorm,不行用hbuilder,vscode 好象都能写代码。甚至还有人用editplus ++ , nodepad 之流了,这就有点过份了哈。
json
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写。
这个东东一出来就直接把xml 的这种格式按地上摩擦了。而且可以可读性好,也把一些不可读的数据包形式也给取代了。
其它的必要知识
- 网页三剑客,这个不用说了
- JAVA,你总得会idea吧
- maven 这个也是必须的
配置文件
这个项目的重点是配置文件,因为这个项目使用的springboot + mybatis 并非是mybatis plus。
POM
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath />
<!-- lookup parent from repository -->
</parent>
<groupId>com.jlwl</groupId>
<!-- 导入项目的名称 -->
<artifactId>springbootj470j</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-schema</name>
<description>springboot学习框架</description>
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<dependencies>
<!-- FastJson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.10.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.0.12</version>
</dependency>
<!-- 百度人工智能 -->
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>4.4.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
yml配置
从yml 文件里也可以看出mybatis-plus 与mybatis 的配置是不一样的
# Tomcat
server:
tomcat:
uri-encoding: UTF-8
port: 8080
servlet:
context-path: /springbootj470j
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/mingsu?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
username: root
password: 123456
# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springbootj470j
# username: sa
# password: 123456
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
resources:
static-locations: classpath:static/,file:static/
#mybatis
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.entity
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
id-type: 1
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 2
#驼峰下划线转换
db-column-underline: true
#刷新mapper 调试神器
refresh-mapper: true
#逻辑删除配置
logic-delete-value: -1
logic-not-delete-value: 0
#自定义SQL注入器
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
#springboot 项目mybatis plus 设置 jdbcTypeForNull (oracle数据库需配置JdbcType.NULL, 默认是Other)
jdbc-type-for-null: 'null'
AI推荐的JAVA学习路线:
以下是系统化的Java基础学习路线图,结合主流技术栈及企业需求整理,共分四个阶段,配有学习要点和资源推荐:
一、Java语法与编程基础(1-2个月)
目标:建立编程思维,掌握核心语法
基础语法:变量/数据类型、运算符、流程控制(if/for/while)、数组
面向对象(OOP):类与对象、封装/继承/多态、抽象类/接口
常用类库:String/StringBuilder、集合框架(List/Set/Map)、异常处理
工具:熟练使用IDEA开发工具,完成学生管理系统等小项目
资源:
书籍:《Java核心技术卷I》
视频:慕课网《Java零基础入门》5
二、语言进阶与高级特性(1个月)
目标:深入理解底层机制,提升代码质量
核心深化:集合源码分析、IO流操作(文件读写/序列化)、多线程(线程创建/同步/Lock锁)
网络编程:Socket通信、TCP/UDP协议
新特性:Lambda表达式、Stream API、函数式接口(Java 8+)
实战:实现单机应用程序(如简易聊天室)
重点:通过调试理解集合扩容、线程状态转换等机制16
三、数据库与Web开发衔接(1-2个月)
目标:掌握数据持久化与基础Web交互
数据库:
MySQL基础:CRUD操作、事务、索引优化
JDBC:连接池原理(如Druid)、SQL防注入
前端基础:HTML/CSS/JavaScript、Ajax异步通信
JavaWeb核心:
Servlet生命周期、JSP动态页面
Filter过滤器和Listener监听器
MVC分层架构实现
项目:开发图书管理系统或简易电商后台311
以下是系统化的Java基础学习路线图,(时间更短)
结合主流技术栈及企业需求整理,共分四个阶段,配有学习要点和资源推荐:
一、Java语法与编程基础(1-2个月)
目标:建立编程思维,掌握核心语法
基础语法:变量/数据类型、运算符、流程控制(if/for/while)、数组
面向对象(OOP):类与对象、封装/继承/多态、抽象类/接口
常用类库:String/StringBuilder、集合框架(List/Set/Map)、异常处理
工具:熟练使用IDEA开发工具,完成学生管理系统等小项目
资源:
书籍:《Java核心技术卷I》
视频:慕课网《Java零基础入门》
二、语言进阶与高级特性(1个月)
目标:深入理解底层机制,提升代码质量
核心深化:集合源码分析、IO流操作(文件读写/序列化)、多线程(线程创建/同步/Lock锁)
网络编程:Socket通信、TCP/UDP协议
新特性:Lambda表达式、Stream API、函数式接口(Java 8+)
实战:实现单机应用程序(如简易聊天室)
重点:通过调试理解集合扩容、线程状态转换等机制
三、数据库与Web开发衔接(1-2个月)
目标:掌握数据持久化与基础Web交互
数据库:
MySQL基础:CRUD操作、事务、索引优化
JDBC:连接池原理(如Druid)、SQL防注入
前端基础:HTML/CSS/JavaScript、Ajax异步通信
JavaWeb核心:
Servlet生命周期、JSP动态页面
Filter过滤器和Listener监听器
MVC分层架构实现
项目:开发图书管理系统或简易电商后台
四、企业开发前置技能(1个月)
目标:构建工程化开发能力
项目管理:
Maven依赖管理、私服配置
Git版本控制(分支管理/协同开发)
Linux基础:常用命令、Tomcat/Nginx部署
框架初探:
Spring IOC容器与Bean管理
MyBatis基础CRUD与映射配置
关键点:掌握SSM(Spring+SpringMVC+MyBatis)整合流程14
️ 学习注意事项
代码优先:每个知识点需手敲代码验证,避免“只看不练”
项目驱动:每个阶段用小项目巩固(如学生管理系统→图书管理系统→电商后台)
避坑指南:
避免过早深入框架源码,先掌握应用层
数据库重点理解索引和事务,而非繁琐SQL语法
资源建议:
算法练习:LeetCode/牛客网刷基础题(每周5题)
文档:Java官方文档 + MySQL官方文档5
总结
提示:IT是一个要多动手的职业,一定要多练不要贪快:
JAVA的学习是一门多练习技能
高效学习Java需要科学规划路径、强化实践并善用资源,以下结合主流学习方法和实战经验,整理出分阶段执行策略:
也要多看我的博客哟。
参考资源
JAVA项目环境必知必会–【大作业及毕设项目】
下载安装程序
其中tomca Maven 也可以用预置目录的自解压文件
https://download.csdn.net/download/dearmite/90689660