Java配置

推荐链接

链接目录

Java

安装JDK

确保从 Oracle官网下载最新的稳定版JDK

安装完JDK后,需要设置一个JAVA_HOME的环境变量,它指向JDK的安装目录。它是安装目录,类似:C:\Program Files\Java\jdk\jdk-21 (注意:jdk和jdk-21两个文件都是手动创建的,为了更好的区分不同版本jdk)

然后,把JAVA_HOME的bin目录附加到系统环境变量PATH上。
Path=%JAVA_HOME%\bin;<现有的其他路径>

完成后,进入cmd窗口输入 java -version 如果一切正常会显示对应版本号,如果你看到的版本号不是21,而是15、1.8之类,说明系统存在多个JDK,且默认JDK不是JDK 21,需要把JDK 21提到PATH前面

第一个Java程序

//文件名必须是HelloWorld.java,而且文件名也要注意大小写,因为要和我们定义的类名HelloWorld 完全保持一致。
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}
//Java源码本质上是一个文本文件,我们需要先用javac把Hello.java编译成字节码文件Hello.class,然后,用java命令执行这个字节码文件
cd xxxx //进入java文件目录
javac HelloWorld.java //当前目录下会产生一个HelloWorld.class文件
java HelloWorld //不用带class

Spring Boot

规范目录结构

项目根目录/src/main/java:放置项目Java源代码
项目根目录/src/main/resources:放置项目静态资源和配置文件
项目根目录/src/test/java:放置项目测试用例代码

///src/main/java
|_annotation:放置项目自定义注解
|_aspect:放置切面代码
|_config:放置配置类
|_constant:放置常量、枚举等定义
   |__consist:存放常量定义
   |__enums:存放枚举定义
|_controller:放置控制器代码
|_filter:放置一些过滤、拦截相关的代码
|_mapper:放置数据访问层代码接口
|_model:放置数据模型代码
   |__entity:放置数据库实体对象定义
   |__dto:存放数据传输对象定义
   |__vo:存放显示层对象定义
|_service:放置具体的业务逻辑代码(接口和实现分离)
   |__intf:存放业务逻辑接口定义
   |__impl:存放业务逻辑实际实现
|_utils:放置工具类和辅助代码

///src/main/resources
|_mapper:存放mybatis的XML映射文件(如果是mybatis项目)
|_static:存放网页静态资源,比如下面的js/css/img
   |__js:
   |__css:
   |__img:
   |__font:
   |__等等
|_template:存放网页模板,比如thymeleaf/freemarker模板等
   |__header
   |__sidebar
   |__bottom
   |__XXX.html等等
|_application.yml       基本配置文件
|_application-dev.yml   开发环境配置文件
|_application-test.yml  测试环境配置文件
|_application-prod.yml  生产环境配置文件

在这里插入图片描述

XML

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mybatis-3-mapper.dtd:约束文件的名称,限制和检查在当前文件中出现的标签和属性符合mybatis的要求-->
<!--namespace:命名空间,要有唯一的值,要求使用dao接口的权限定名称(一个dao接口对应一个mapper,namespace指明对应哪个dao接口)-->
<mapper namespace="com.jxd.emp.dao.IEmpDao">
 <!-- 所有的数据库操作都要写在mapper标签中,可以使用特定的标签表示数据库中的特定操作 -->
</mapper>

数据库配置

相关依赖

mysql
//在新建springboot项目时候勾选了mysql驱动就会自动下载下面spring配置的默认驱动,通常情况下mysql依赖版本比较高
	<dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <scope>runtime</scope>
	</dependency>
    
//这里配置mysql8.x版本
//如果mysql5.7依赖无法下载,可以进行使用则进行平替   
	 <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.13</version>
      //<version>8.0.27</version>
	 </dependency>
	 
//5.1.x版本的msyql依赖	 
	<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.49</version>
	</dependency>
JPA
//import javax.persistence.*;

/**
Jakarta EE 8 以上版本使用以下引入
import jakarta.persistence.*; 
*/
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

错误级别

日志级别可以按照以下顺序排列(从高到低):ERROR > WARN > INFO > DEBUG > TRACE。因此,将日志级别设置为 WARN 表示只输出警告级别及更高级别的日志消息。
logging.level 是用于指定日志级别的属性,root 表示根日志记录器。
通过将 logging.level.root 的值设置为 WARN,你告诉日志框架只输出警告级别(WARN)及以上的日志消息,而忽略更低级别的消息。这样可以降低日志输出的数量,只显示警告、错误和严重级别的日志。

application.properties

#当版本为spring boot 2.0(内置jdbc5驱动)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名称?characterEncoding=utf-8&useSSL=false
#用户名称
spring.datasource.username=root
# 数据库密码
spring.datasource.password=root

------------------------------------------------------------------------------
注意:driver和url的变化
------------------------------------------------------------------------------

#当版本为spring boot 2.1及以上(内置jdbc8驱动)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名称?serverTimezone=GMT%2B8
#用户名称
spring.datasource.username=root
# 数据库密码
spring.datasource.password=root

# JPA 配置
//这个属性指定了 Hibernate 使用的数据库方言。在这种情况下,它告诉 Hibernate 使用 MySQL x.x 版本的方言,注意自己springboot引用的mysql依赖,以确保与数据库的兼容性。
#5.7.x
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
#8.x
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

#这个属性用于指定是否在控制台上显示生成的 SQL 语句。当设置为 true 时,Hibernate 会将执行的 SQL 语句输出到控制台,方便调试和查看生成的 SQL。
spring.jpa.show-sql=true

#这个属性用于指定 Hibernate 在启动时对数据库表的自动操作。update 表示 Hibernate 会根据实体类的定义自动更新数据库表结构,但不会删除或重建表。这意味着如果表不存在,Hibernate 会尝试创建它;如果表已经存在,则会根据实体类的定义更新表结构。
spring.jpa.hibernate.ddl-auto=update


# mybatis

#实体类别名
#mybatis.type-aliases-package 是一个配置项,用于指定类型别名的包路径。
#com.springboot.pojo 是具体的包路径,表示要扫描的包路径,其中包含了需要使用的实体类。
#这样配置后,在映射文件中的 resultType 属性中可以直接使用 实体类的类名
mybatis.type-aliases-package=com.springboot.pojo

#映射文件的位置
#mybatis.mapper-locations 是一个配置项,用于指定 MyBatis 映射文件的位置。
#classpath: 是一个前缀,表示从类路径中查找资源。在 Spring Boot 中,类路径指的是项目的 resources 目录。
#mapper/ 是指映射文件所在的相对路径。这里假设映射文件位于 resources 目录下的 mapper 目录中。
#*.xml 是通配符,表示所有以 .xml 结尾的文件。这里表示所有以 .xml 结尾的文件都会被视为 MyBatis 的映射文件。
mybatis.mapper-locations=classpath:mapper/*.xml



# 端口
#修改SpringBoot应用程序在 web 端的端口
server.port=9090

# 端口号设置为 0,表示让操作系统自动分配一个可用的端口号
server.port=0

#将日志级别设置为更高(如WARN或ERROR),以减少输出的日志数量
logging.level.root=WARN

测试数据库是否链接成功

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
//import org.junit.runner.RunWith;
//import org.springframework.test.context.junit4.SpringRunner;

//@RunWith(SpringRunner.class)
@SpringBootTest
public class DatabaseConnectionTest {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Test
    public void testDatabaseConnection() {
    	//如果测试通过并输出了预期的结果,那么说明数据库连接配置正确,并且应用程序能够成功连接到数据库。
		//执行测试方法看日志最后是否出现:Database connection successful. Result: 1,日志上方爆红的警告不用管
		//第二条 SELECT VERSION(); ,查询后可以知道链接数据库的版本,再次执行后观察是否跟第一次查询结果不同

		//如果测试数据库链接失败,试一试把上面注解和引用的注释给去除掉,然后再次试一下。

        String result = jdbcTemplate.queryForObject("SELECT 1;", String.class);
        //查看数据库版本
//      String result = jdbcTemplate.queryForObject("SELECT VERSION();", String.class);

        System.out.println("Database connection successful. Result: " + result);
    }
}

创建实体类

@Data // 自动生成 getter、setter、equals、hashCode 和 toString 方法
@AllArgsConstructor //自动生成一个包含所有类字段的全参构造方法。
@NoArgsConstructor //自动生成一个无参构造方法。
@Enabled // 假设这是一个自定义注解,根据你的需求来定义其作用
@Table(name = "tb_user") // 指定数据库表的名称
public class User {
    @Id // 标识为主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 指定主键生成策略为自增
    private Integer id;
    private String name;
    private String creator;
    private LocalDateTime createTime;
}

创建控制层(Controller)


import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;

@RestController
public class UserController {

    @GetMapping("/hello")
    public String hello(){
        return "GET: Hello, Spring Boot!";
    }

    @PostMapping("/hello")
    public String hello(@RequestBody String name) {
        return "POST: Hello, " + name + "!";
    }
    
    @GetMapping("/hello/{id}/{name}")
    public String helloGet(@PathVariable Integer id,@PathVariable String name){
        //路径参数@PathVariable
        return "GET: Hello, " + "id :" + id + "name :" + name;
    }
    
    @PostMapping("/helloPost")
    public String helloPost(@RequestParam(name = "username",required = false) String name){
        //设置@RequestParam(name = "username",required = false) 参数传递过来是username键名称,取消必填
        return "POST: Hello, Spring Boot!";
    }

    @GetMapping("/helloTime")
    public String  helloTime(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime createTime){
        //控制时间参数的格式
        return "Hello " + createTime;
    }
}

创建数据层(DOA)(Mapper)

import com.springboot.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface UserMapper {
    
    List<User> getAll();
}

//dao层对应的xml方法,所在位置 src/main/resources/mapper/UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mybatis-3-mapper.dtd:约束文件的名称,限制和检查在当前文件中出现的标签和属性符合mybatis的要求-->
<!--namespace:命名空间,要有唯一的值,要求使用dao接口的权限定名称(一个dao接口对应一个mapper,namespace指明对应哪个dao接口)-->
<mapper namespace="com.springboot.mapper.UserMapper">
    <!-- 所有的数据库操作都要写在mapper标签中,可以使用特定的标签表示数据库中的特定操作 -->
    <select id="getAll" resultType="User">
        select user_id,user_login,user_name,user_description,create_time from tb_user
    </select>
</mapper>

创建业务逻辑层(Service)

import com.springboot.pojo.User;
import java.util.List;

public interface UserService {
    List<User> getAll();
}

//实现业务层接口
import com.springboot.mapper.UserMapper;
import com.springboot.pojo.User;
import com.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private  UserMapper userMapper;
    
    @Override
    public List<User> getAll() {
       return userMapper.getAll();
    }
}

彩蛋

只需要在 Spring Boot 工程的 /src/main/resources 目录下创建一个 banner.txt 文件,然后将 ASCII 字符画复制进去,就能替换默认的 banner 了

${AnsiColor.BRIGHT_RED}:设置控制台中输出内容的颜色
${application.version}:用来获取MANIFEST.MF文件中的版本号
${application.formatted-version}:格式化后的${application.version}版本信息
${spring-boot.version}:Spring Boot的版本号
${spring-boot.formatted-version}:格式化后的${spring-boot.version}版本信息
${AnsiColor.BRIGHT_YELLOW}
 
                    ┏━┓     ┏━┓
                   ┏┛ ┻━━━━━┛ ┻┓
                   ┃       ┃
                   ┃   ━   ┃
                   ┃ ┳┛   ┗┳ ┃
                   ┃       ┃
                   ┃   ┻   ┃
                   ┃       ┃
                   ┗━┓   ┏━━━┛
                     ┃   ┃   神兽保佑
                     ┃   ┃   代码无BUG!
                     ┃   ┗━━━━━━━━━┓
                     ┃           ┣┓
                     ┃             ┏┛
                     ┗━┓ ┓ ┏━━━┳ ┓ ┏━┛
                       ┃ ┫ ┫   ┃ ┫ ┫
                       ┗━┻━┛   ┗━┻━┛
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
${AnsiColor.BRIGHT_YELLOW}

//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//            佛祖保佑       永不宕机     永无BUG                  //


I DIDN'T LISTEN TO MY                                                     
MOTHER ABOUT CROSSING                                                     
MY EYES SO THEY STUCK                                                     
THIS WAY                                                                  
                                                                          
HOLY GOD I NEED TOOL                                                      
                                                                          
             \              .::::::`.::::::::::..                         
              \          .''``````.:::::::::::::::::                      
               \      .:',ere$ze c :::::::::::::::::::                    
                \   ,'` e$$$$$$$-K eeeu...`````:::::::::                  
                   .zd>^leeu^R$%:FJ$$$$$$$$$$e.. ``::::::                 
               .ed$$$$4$$$$$P-u@" ""?????R$$$$$$$hc. ``:::                
             .e$$F"..: P??7loF .:::::::::::.."""?R$$$e. `:.               
            zF".:::::::`"""'.:::::::::::::::::::::.`"?$$e.`               
            .::::::::::::':::::::::::::::::::::::::::::.`"=.              
          .:::::::::::::` `:::::::::::::::::::::::::::::::..              
       .:::::::::::::` ud$ec.  ``:::::::::::::::::::::::::::::.           
     .:::::::::::`` .zd$$$$$$$ec..  ```::::::::::::::::::::::::::         
   .:::::::::::`    "??$$$$$$$$$$$P        ``::::::::::::::::::::::       
  ::::::::::` .. $$*.  ^$$$$$$$$$$ .e$**"" =e=..  ``::::::::::::::::.     
  ::::::::: :::.  . ^  $$P$$$$$$$$$$F  .'$$$N4$$L'::.  `:::::::::::::::   
  `::::::` :::::: $    '$$4$$$$$$$$% - : $$$F$$$$u`::::::. `:::::::::::.  
   :::::: :::::: .^m.-.e.$'$$$$$$$P.  -)z$?Cd$$$$$u `:::::::. `:::::::::  
    `::::::::::: J$buFh52d4$$$$$$$LcccccCz$$$$$$$$": `::::::::..::::::::: 
      `::::::::: $$$$$$$$PJ$$$$$$$$$$$$$$$$$$$$$F.d$$. `::::::::::::::::` 
        `::::::  ?$$$$$$$F$$$$$$$$$$$$$$$$$$$$P x$$$$$$L `::::::::::::::  
          ``:: dN ?$$$$$$N2$$?3$$$$$$$$$$$$$$P dP\$$$$$$$u `::::::::::::  
            `:'" $.`R$$P???$$P??????"$$$$$$$$ 9".d$$$$$$$$b.`::::::::::   
            ::   R$$. ?$$r  `..;; . $$$$$$$F"'$'$J?$$$$$$$f   ::::::::    
            `:.^""""""."?$`niiiodfu$$$$$F"z$$ ^""~""""`..::::  ::::::     
              `::::::::::`?beCCbe$$$$""cd$$$$i .`::::::::::::. `:::`      
                ``:::::::::`?$$$P"',cd$$$$$$$$r?k :::::::::::`.:::`       
                   ```::::::::: 4$$$$$$$$$$$$$"d$ ``::::::::::::`         
                         ``::: . $$$$$$$$$$$$fJ$F4$e.``:::::::`           
                              dR `$$$$$$$$$$"x$$ d$$$$eu,.```
                          .e$ $E b?$$$$$$$".d$$ d$$$$$$$$$$$e..           
                    ..ee$$$$$ $$k`$$$$$$".d$$".$$$$$$$$$$$$$$$$$$hec.     
               .ze$$$$$$$$$$$b"$$heeeeeud$R" e$$$$$$$$$$$$$$$$$$$$$$$$$e. 
           z$$$$$$$$$$$$$$$$$$h`?c""""J$R z$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      .ee$$$$$$$$$$$$$$$$$$$$$$hc"xJ>=".zd$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    .d$$$$$$$$$$$$$$$$$$$$$$$$$$$$he$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值