当前位置: 首页 > news >正文

黑马教程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映射文件方式开发,需要符合一定的规范:

  1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
  2. XML映射文件的namespace属性为Mapper接口全限定名一致
  3. 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配置文件的基本语法:

  1. 大小写敏感
  2. 数值前边必须有空格,作为分隔符
  3. 使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
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配置方式:

  1. 修改application.properties名字为:_application.properties(名字随便更换,只要加载不到即可)
  2. 创建新的配置文件: application.yml

在这里插入图片描述
在这里插入图片描述

http://www.xdnf.cn/news/1153981.html

相关文章:

  • 从零开始的云计算生活——番外5,使用ELK实现对应用日志的监控
  • HTML Style 对象深度解析:从基础到高级应用
  • client-go: k8s选主
  • 【Linux】1. Linux操作系统介绍及环境搭建
  • 20250720-6-Kubernetes 调度-nodeName字段,DaemonS_笔记
  • MySQL笔记3
  • 西门子 S7-1500 系列 PLC CPU 选型全指南:从类型到实战
  • 30天打牢数模基础-K均值聚类
  • 最大子数组和问题-详解Kadane算法
  • MySQL 配置性能优化实操指南:分版本5.7和8.0适配方案
  • 爬虫实战案例(两个)
  • 笔试——Day13
  • LeetCode 1712.将数组分成三个子数组的方案数
  • LVS(Linux Virtual Server) 集群
  • 【AI】文生图文生视频
  • 基于单片机的危险气体远程检测报警系统设计
  • 周末总结(2024/07/19)
  • 前端面试专栏-工程化:28.团队协作与版本控制(Git)
  • Jmeter系列(7)-线程组
  • python基础笔记
  • 西门子 S7-1500 PLC 电源选型指南:系统电源与负载电源的核心区别
  • LLM大模型微调技术与最佳实践
  • freertos任务调度关键函数理解
  • 动态规划——状压DP经典题目
  • 【Keil5-map文件】
  • FMEA-CP-PFD三位一体数字化闭环:汽车部件质量管控的速效引擎
  • simulink系列之模型接口表生成及自动连线脚本
  • Nestjs框架: 理解 RxJS响应式编程的核心概念与实践
  • 商业秘密视域下计算机软件的多重保护困境
  • 支付宝支付