黑马教程Webday6
目录
- 一、Web后端基础(java操作数据库)
- 1前言
- 2JDBC
- 2.1介绍
- 2.2入门程序
- 1)项目结构设置(这里和后面的程序结构有相连)
- 2)pom.xml编写
- 3)JdbcTest.java编写
- 2.3查询数据
- 1)准备工作和数据库创建
- 2)pom.xml编写
- 3)jdbcTest.java编写(看下面那个测试)
- 4)相关内容的解释
- 5)扩展
- 3MyBatis
- 3.1什么是MyBatis?
- 3.2快速入门
- 1). 创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包、lombok。
- 2). 数据准备:创建用户表user,并创建对应的实体类User。
- 3). 配置Mybatis在 application.properties 中配置数据库的连接信息。
- 4). 编写Mybatis程序:编写Mybatis的持久层接口,定义SQL语句(注解)
- 5). 单元测试
- 3.3辅助标准
- 1)配置sql提示
- 2)配置Mybatis日志输出
- 3.4JDBC VS Mybatis
- 3.5数据连接池
- 1)Hikari(追光者) [默认的连接池] (自己所跑程序)
- 2)Druid(德鲁伊)
- 3.6增删改查操作
- 1)删除
- 2)新增
- 3)修改
- 4)整体代码演示
- 3.7XML映射配置
- 1)概念和规范
- 2)XML配置文件实现
- 3)XML映射文件-辅助配置
- 4)MybatisX的使用
- 3.8SprigBoot配置文件
- 1)介绍
- 2)语法
- 3)数据格式
- 4)案例操作
一、Web后端基础(java操作数据库)
1前言
做为后端程序开发人员,通常会使用Java程序来完成对数据库的操作。Java程序操作数据库的技术呢,有很多啊,而最为底层、最为基础的就是JDBC。
JDBC:(Java DataBase Connectivity),就是使用Java语言操作关系型数据库的一套API。 【是操作数据库最为基础、底层的技术】
但是使用JDBC来操作数据库,会比较繁琐,所以现在在企业项目开发中呢,一般都会使用基于JDBC的封装的高级框架,比如:Mybatis、MybatisPlus、Hibernate、SpringDataJPA。
从上图中,我们也可以看到,目前最为主流的就是Mybatis,其次是MybatisPlus。
2JDBC
2.1介绍
JDBC:(Java DataBase Connectivity),就是使用Java语言操作关系型数据库的一套API。
本质:
1)sun公司官方定义的一套操作所有关系型数据库的规范,即接口。
2)各个数据库厂商去实现这套接口,提供数据库驱动jar包。
3)我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
2.2入门程序
● 需求:基于JDBC程序,执行update语句(update user set age =25 where id =1)
步骤:
· 准备工作:创建一个maven项目,引入依赖;并准备数据库表user。
· 代码实现:编写JDBC程序,操作数据库
1)项目结构设置(这里和后面的程序结构有相连)
说明:此时使用最简单的创建的是java结构的项目
2)pom.xml编写
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.itheima</groupId><artifactId>day6JDBC</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- MySQL JDBC driver --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.3</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.38</version><scope>provided</scope></dependency></dependencies>
</project>
3)JdbcTest.java编写
package com.itheima;
import com.itheima.pojo.User;
import org.junit.Test;
import java.sql.*;
public class JdbcTest {/**JDBC入门程序**/@Testpublic void testUpdate() throws Exception{//1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");//2。获取数据库连接String url="jdbc:mysql://localhost:3306/web01";String username="root";String password="1234";Connection connection =DriverManager.getConnection(url,username,password);//3.获取SQL语句执行对象//statment用来实行对应的SQL语句Statement statement = connection.createStatement();//4.执行SQLint i= statement.executeUpdate("update user set age=25 where id=1");//DML语句System.out.println("SQL执行完毕影响的记录数为"+i);//5.释放资源statement.close();connection.close();}
2.3查询数据
需求:基于JDBC实现用户登录功能。
本质:其本质呢,其实就是基于JDBC程序,执行如下select语句,并将查询的结果输出到控制台。
SQL语句:
select * from user where username = 'linchong' and password = '123456';
1)准备工作和数据库创建
数据库创建(利用DataGrip)
create table user(id int unsigned primary key auto_increment comment 'ID,主键',username varchar(20) comment '用户名',password varchar(32) comment '密码',name varchar(10) comment '姓名',age tinyint unsigned comment '年龄'
) comment '用户表';insert into user(id, username, password, name, age) values (1, 'daqiao', '123456', '大乔', 22),(2, 'xiaoqiao', '123456', '小乔', 18),(3, 'diaochan', '123456', '貂蝉', 24),(4, 'lvbu', '123456', '吕布', 28),(5, 'zhaoyun', '12345678', '赵云', 27);
2)pom.xml编写
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.itheima</groupId><artifactId>day6JDBC</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- MySQL JDBC driver --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.3</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.38</version><scope>provided</scope></dependency></dependencies>
</project>
3)jdbcTest.java编写(看下面那个测试)
package com.itheima;import com.itheima.pojo.User;
import org.junit.Test;import java.sql.*;public class JdbcTest {/**JDBC入门程序**/@Testpublic void testUpdate() throws Exception{//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2。获取数据库连接String url="jdbc:mysql://localhost:3306/web01";String username="root";String password="1234";Connection connection =DriverManager.getConnection(url,username,password);//3.获取SQL语句执行对象//statment用来实行对应的SQL语句Statement statement = connection.createStatement();//4.执行SQLint i= statement.executeUpdate("update user set age=25 where id=1");//DML语句System.out.println("SQL执行完毕影响的记录数为"+i);//5.释放资源statement.close();connection.close();}@Testpublic void testSelect(){String URL="jdbc:mysql://localhost:3306/web01";String USER="root";String PASSWORD="1234";Connection conn=null;PreparedStatement stmt=null;ResultSet rs=null;//封装查询返回的结果DQLtry{Class.forName("com.mysql.cj.jdbc.Driver");conn=DriverManager.getConnection(URL,USER,PASSWORD);String sql="select id,username,password,name,age from user where username = ? and password = ?";//预编译SQL语句stmt=conn.prepareStatement(sql);stmt.setString(1,"daqiao");stmt.setString(2,"123456");rs=stmt.executeQuery();//查询while(rs.next()) {User user = new User(rs.getInt("id"),rs.getString("username"),rs.getString("password"),rs.getString("name"),rs.getInt("age"));System.out.println(user);}}catch (SQLException se){se.printStackTrace();}catch (Exception e){e.printStackTrace();}finally {try{if(rs!=null) rs.close();if(stmt!=null) stmt.close();if(conn!=null) conn.close();}catch (SQLException se2){se2.printStackTrace();}}}
}
4)相关内容的解释
ResultSet(结果集对象):封装了DQL查询语句查询的结果。
- next():将光标从当前位置向前移动一行,并判断当前行是否为有效行,返回值为boolean。
- true:有效行,当前行有数据
- false:无效行,当前行没有数据
- getXxx(…):获取数据,可以根据列的编号获取,也可以根据列名获取(推荐)。
预编译SQl:
- 静态SQL(参数硬编码):
conn.prepareStatement("SELECT * FROM user WHERE username = 'daqiao' AND password = '123456'");
ResultSet resultSet = pstmt.executeQuery();
- 预编译SQl(参数动态传递):
conn.prepareStatement("SELECT * FROM user WHERE username = ? AND password = ?");
pstmt.setString(1, "daqiao");
pstmt.setString(2, "123456");
ResultSet resultSet = pstmt.executeQuery();
解释:使用 ? 进行占位,然后再指定每一个占位符对应的值是多少,而最终在执行SQL语句的时候,程序会将SQL语句(SELECT * FROM user WHERE username = ? AND password = ?),以及参数值(“daqiao”, “123456”)都发送给数据库,然后在执行的时候,会使用参数值,将?占位符替换掉。
优势:防止SQL注入;性能更高
5)扩展
上述只涉及了查询,想要实现其他功能可以利用
//省略rs=stmt.executeQuery();//查询rs=stmt.executeUpdate();
//实现的是DML语句
- JDBC程序执行DML语句:int rowsUpdated = pstmt.executeUpdate(); //返回值是影响的记录数
- JDBC程序执行DQL语句:ResultSet resultSet = pstmt.executeQuery(); //返回值是查询结果集
3MyBatis
3.1什么是MyBatis?
MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。
MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
官网:https://mybatis.org/mybatis-3/zh/index.html
- 持久层:指的是就是数据访问层(dao),是用来操作数据库的。
- 框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上进行软件开发更加高效、规范、通用、可拓展。
通过Mybatis就可以大大简化原生的JDBC程序的代码编写,比如 通过 select * from user 查询所有的用户数据,通过JDBC程序操作呢,需要大量的代码实现,而如果通过Mybatis实现相同的功能,只需要简单的三四行就可以搞定。
3.2快速入门
需求:使用Mybatis查询所有用户数据 。
准备工作:
1). 创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包、lombok。
项目大结构(设置到后面操作,后面就不再添加):
2). 数据准备:创建用户表user,并创建对应的实体类User。
package org.itheima.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {//推荐使用包装类,因为基本数据类型有默认值private Integer id;private String username;private String password;private String name;private Integer age;
3). 配置Mybatis在 application.properties 中配置数据库的连接信息。
#配置数据的连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/web01
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=1234
4). 编写Mybatis程序:编写Mybatis的持久层接口,定义SQL语句(注解)
package org.itheima.mapper;
import org.apache.ibatis.annotations.*;
import org.itheima.pojo.User;
import java.util.List;
@Mapper //应用程序在运行时,会自动创建一个实体类对象(代理对象),并且会自动将实现类对象存在IOC容器中-bean。
public interface UserMapper {//@Select("select * from user")public List<User> findAll(); //数据封装在User对象中,返回一个集合@Delete("delete from user where id=#{id}")
}
注解说明:
- @Mapper注解:表示是mybatis中的Mapper接口
程序运行时,框架会自动生成接口的实现类对象(代理对象),并给交Spring的IOC容器管理 - @Select注解:代表的就是select查询,用于书写select查询语句
5). 单元测试
在创建出来的SpringBoot工程中,在src下的test目录下,已经自动帮我们创建好了测试类 ,并且在测试类上已经添加了注解 @SpringBootTest,代表该测试类已经与SpringBoot整合。
该测试类在运行时,会自动通过引导类加载Spring的环境(IOC容器)。
我们要测试那个bean对象,就可以直接通过@Autowired注解直接将其注入进行,然后就可以测试了。
package org.itheima;import org.itheima.mapper.UserMapper;
import org.itheima.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest//Springboot的单元测试的注解,当前测试类中的测试方法运行时,会启动springboot项目-IOC容器-beanclass Day6springbootMybatisQuickstartApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void testFindAll(){List<User> userList=userMapper.findAll();userList.forEach(System.out::println);}}
3.3辅助标准
1)配置sql提示
默认在Mybatis中配置的SQL语句是不识别的,可以做如在配置:
此时user会报错,因为语法检测不到这个user
产生原因:idea和数据库没有建立连接,不识别表信息。
解决方式:在idea张配置Mysql数据库连接。
2)配置Mybatis日志输出
默认情况下,在Mybatis中,SQL语句执行时,我们并看不到SQL语句的执行日志。 在application.properties加入如下配置,即可查看日志:
#mybatis的配置
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
打开上述开关之后,再次运行单元测试,就可以看到控制台输出的SQL语句是什么样子的。
3.4JDBC VS Mybatis
JDBC程序的缺点:
- url、username、password 等相关参数全部硬编码在java代码中。
查询结果的解析、封装比较繁琐。 - 每一次操作数据库之前,先获取连接,操作完毕之后,关闭连接。 频繁的获取连接、释放连接造成资源浪费。
分析了JDBC的缺点之后,我们再来看一下在mybatis中,是如何解决这些问题的:
- 数据库连接四要素(驱动、链接、用户名、密码),都配置在springboot默认的配置文件 application.properties中
- 查询结果的解析及封装,由mybatis自动完成映射封装,我们无需关注
- 在mybatis中使用了数据库连接池技术,从而避免了频繁的创建连接、销毁连接而带来的资源浪费。
使用SpringBoot+Mybatis的方式操作数据库,能够提升开发效率、降低资源浪费
而对于Mybatis来说,我们在开发持久层程序操作数据库时,需要重点关注以下两个方面:application.properties;Mapper接口(编写SQL语句)
3.5数据连接池
- 数据库连接池是一个容器、负责分配、管理数据库连接。
- 它允许应用程序重复使用一个现有的数据连接,而不是在重新建议一个。
- 释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。
优势:1.资源重用。2.提升系统响应速度3避免数据库连接遗漏。
标准接口:DataSource
官方(sun)提供了数据库连接池标准(javax.sql.DataSource接口)
功能:获取连接
public Connection getConnection() throws SQLException;
第三方组织必须按照DataSource接口实现
常见的数据库连接池:C3P0 、DBCP 、Druid 、Hikari (springboot默认)
现在使用更多的是:Hikari、Druid (性能更优越)
1)Hikari(追光者) [默认的连接池] (自己所跑程序)
从控制台输出的日志,我们也可以看出,springboot底层默认使用的数据库连接池就是 Hikari。
2)Druid(德鲁伊)
Druid连接池是阿里巴巴开源的数据库连接池项目
功能强大,性能优秀,是Java语言最好的数据库连接池之一
如果我们想把默认的数据库连接池切换为Druid数据库连接池,只需要完成以下两步操作即可:
a.在pom.xml文件中引入依赖
b.在application.properties中引入数据库连接配置
运行结果
3.6增删改查操作
1)删除
需求:根据ID删除用户信息
SQL:delete from user where id = 5;
Mapper接口方法:
方式一:
/** * 根据id删除 */
@Delete("delete from user where id = 5")
public void deleteById();
这种方式执行删除操作,调用deleteById方法只能删除id为5的用户信息,因为将id直接写死在代码中了,不可取。
方法二:
/** * 根据id删除 */
@Delete("delete from user where id = #{id}")
public void deleteById(Integer id);
方法三:
@Delete("delete from user where id=#{id}")public Integer deleteById1(Integer id);//Interger用来接受删除的返回值
在Mybatis中,我们可以通过参数占位符号 #{…} 来占位,在调用deleteById方法时,传递的参数值,最终会替换占位符。
在单元测试类中,增加如下测试方法.
//方法一:
@Test
public void testDeleteById(){ userMapper.deleteById(36); }
//方法二;
@Testpublic void testDeleteById1(){Integer num= userMapper.deleteById1(6);System.out.println("执行完毕,印象记录数:"+num);}
Mybatis的提供的符号,有两个,一个是 #{…},另一个是 ${…},区别如下:
那在企业项目开发中,强烈建议使用 #{…} 。
2)新增
需求:添加一个用户
SQL:insert into user(username,password,name,age) values(‘zhouyu’,‘123456’,‘周瑜’,20);
Mapper接口:
方法一:
/** * 添加用户 */
@Insert("insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})")
public void insert(User user);
如果在SQL语句中,我们需要传递多个参数,我们可以把多个参数封装到一个对象中。然后在SQL语句中,我们可以通过#{对象属性名}的方式,获取到对象中封装的属性值。
单元测试:
在测试类中添加测试方法,代码如下:
@Test
public void testInsert(){User user = new User();user.setUsername("admin");user.setPassword("123456");user.setName("管理员");user.setAge(30);userMapper.insert(user);
}
3)修改
需求:根据ID更新用户信息
SQL:
update user set username = 'zhouyu', password = '123456', name = '周瑜', age = 20 where id = 1;
Mapper接口方法:
/** * 根据id更新用户信息 */
@Update("update user set username = #{username},password = #{password},name = #{name},age = #{age} where id = #{id}")
public void update(User user);
单元测试:
在测试类中添加测试方法,代码如下:
@Test
public void testUpdate(){User user = new User();user.setId(6);user.setUsername("admin666");user.setPassword("123456");user.setName("管理员");user.setAge(30);userMapper.update(user);
}
4)整体代码演示
UserMapper.java
package org.itheima.mapper;import org.apache.ibatis.annotations.*;
import org.itheima.pojo.User;import java.util.List;@Mapper //应用程序在运行时,会自动创建一个实体类对象(代理对象),并且会自动将实现类对象存在IOC容器中-bean。
public interface UserMapper {//@Select("select * from user")public List<User> findAll(); //数据封装在User对象中,返回一个集合@Delete("delete from user where id=#{id}")public void deleteById(Integer id);@Delete("delete from user where id=#{id}")public Integer deleteById1(Integer id);//Interger用来接受删除的返回值@Insert("insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})")public void insert(User user);/*** 根据id更新用户信息*/@Update("update user set username = #{username},password = #{password},name = #{name},age = #{age} where id = #{id}")public void update(User user);/*** 根据用户名和密码查询用户信息*/@Select("select * from user where username = #{username} and password = #{password}")public User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
}
Day6springbootMybatisQuickstartApplicationTests:
package org.itheima;import org.itheima.mapper.UserMapper;
import org.itheima.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest//Springboot的单元测试的注解,当前测试类中的测试方法运行时,会启动springboot项目-IOC容器-beanclass Day6springbootMybatisQuickstartApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void testFindAll(){List<User> userList=userMapper.findAll();userList.forEach(System.out::println);}@Testpublic void testDeleteById(){userMapper.deleteById(5);}@Testpublic void testDeleteById1(){Integer num= userMapper.deleteById1(6);System.out.println("执行完毕,印象记录数:"+num);}@Testpublic void testInsert(){User user = new User();user.setUsername("admin");user.setPassword("123456");user.setName("管理员");user.setAge(30);userMapper.insert(user);}@Testpublic void testUpdate(){User user = new User();user.setId(6);user.setUsername("admin666");user.setPassword("123456");user.setName("管理员");user.setAge(30);userMapper.update(user);}@Testpublic void testFindByUsernameAndPassword(){User user = userMapper.findByUsernameAndPassword("admin666", "123456");System.out.println(user);}
}
3.7XML映射配置
1)概念和规范
Mybatis的开发有两种方式
1.注解
2.XML
XML配置文件规范:
使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。
在Mybatis中使用XML映射文件方式开发,需要符合一定的规范:
- XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
- XML映射文件的namespace属性为Mapper接口全限定名一致
- XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。
2)XML配置文件实现
1.创建XML映射文件
2.编写XML映射文件
xml映射文件中的dtd约束,直接从mybatis官网复制即可; 或者直接AI生成。
3.配置
a.XML映射文件的namespace属性为Mapper接口全限定名
b.XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致
resultType 属性的值,与查询返回的单条记录封装的类型一致。
验证结果时,记住要把UserMapper文件重点@Select注释掉。
注意:一个接口方法对应的SQL语句,要么使用注解配置,要么使用XML配置,切不可同时配置。
3)XML映射文件-辅助配置
配置XML映射文件的位置:
//application.properties:
//指定XML映射配置文件的位置
mybatis.mapper-locations=classpath: mapper/ *. xml
4)MybatisX的使用
MybatisX是一款基于IDEA的快速开发Mybatis的插件,为效率而生。
MybatisX的安装:
学习了Mybatis中XML配置文件的开发方式了,可能会存在一个疑问:到底是使用注解方式开发还是使用XML方式开发?
结论:使用Mybatis的注解,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句。
3.8SprigBoot配置文件
1)介绍
前面我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置,而如果在项目中,我们需要配置大量的属性,采用properties配置文件这种 key=value 的配置形式,就会显得配置文件的层级结构不清晰,也比较臃肿。
那其实呢,在springboot项目当中是支持多种配置方式的,除了支持properties配置文件以外,还支持另外一种类型的配置文件,就是我们接下来要讲解的yml格式的配置文件。yml格式配置文件名字为:application.yaml , application.yml 这两个配置文件的后缀名虽然不一样,但是里面配置的内容形式都是一模一样的。
我们可以来对比一下,采用 application.properties 和 application.yml 来配置同一段信息(数据库连接信息),两者之间的配置对比:
2)语法
简单的了解过springboot所支持的配置文件,以及不同类型配置文件之间的优缺点之后,接下来我们就来了解下yml配置文件的基本语法:
- 大小写敏感
- 数值前边必须有空格,作为分隔符
- 使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
3)数据格式
yml文件中常见的数据格式。在这里我们主要介绍最为常见的两类:
定义对象或Map集合
定义数组、list或set集合
//对象/Map集合
user:name: zhangsanage: 18password: 123456//数组/List/Set集合
hobby: - java- game- sport
在yml格式的配置文件中,如果配置项的值是以 0 开头的,值需要使用 ‘’ 引起来,因为以0开头在yml中表示8进制的数据。
4)案例操作
熟悉完了yml文件的基本语法后,我们修改下之前案例中使用的配置文件,变更为application.yml配置方式:
- 修改application.properties名字为:_application.properties(名字随便更换,只要加载不到即可)
- 创建新的配置文件: application.yml