Q1.properties和yaml配置文件的区别
Properties 文件:
- 扩展名通常为
.properties
。 - 格式为简单的键值对,每行一个配置项。
- 注释使用
#
或!
开头。 - 值不能嵌套或分层。
# Application properties
server.port=8080
database.url=jdbc:mysql://localhost:3306/mydb
database.username=root
database.password=secret
YAML 文件:
- 扩展名通常为
.yaml
或.yml
。 - 格式更具可读性,支持层次结构,类似于 JSON。
- 注释使用
#
开头。 - 支持复杂的数据结构,如列表、字典和嵌套对象。
# Application configuration
server:
port: 8080
database:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
Q2.mapper接口上添加@Repository与@Mapper有何区别?
@Repository 和 @Mapper 的区别
- 来源和用途:
@Repository
:来自 Spring 框架,用于标识数据访问层组件。@Mapper
:来自 MyBatis 框架,用于标识 MyBatis 的 Mapper 接口。
- 功能差异:
@Repository
:提供数据访问异常转换机制,参与 Spring 的组件扫描。@Mapper
:将接口注册为 MyBatis 的 Mapper,MyBatis 会为其生成实现类。
- 使用
@Mapper
:如果你在每个 Mapper 接口上添加了@Mapper
注解,通常情况下不需要在启动类中显式配置@MapperScan
,因为 MyBatis-Spring-Boot-Starter 会自动扫描这些接口。 - 使用
@MapperScan
:如果你不想在每个 Mapper 接口上添加@Mapper
注解,可以在启动类或配置类中使用@MapperScan
注解来指定 Mapper 接口所在的包。 - 两者结合:也可以同时使用
@Mapper
和@MapperScan
以确保所有 Mapper 接口都被正确扫描和注册。
Java 中的 long
类型和数据库中的 BIGINT
类型之间的映射是因为它们都是 64 位有符号整数,并且具有相同的值范围。这种映射确保了在将数据从数据库加载到 Java 应用程序时,数据的范围和表示方式保持一致,从而避免数据溢出或丢失。常见的 ORM 框架会自动处理这种映射,使得开发人员无需手动处理数据类型之间的转换。
Q3.public class UserServiceImpl extends ServiceImpl<UserMapper,User>implements UserService 解释一下这段代码
主要组件解析
UserServiceImpl
:这是一个 Service 实现类,负责具体的业务逻辑实现。ServiceImpl<UserMapper, User>
:ServiceImpl
是 MyBatis-Plus 提供的一个基础实现类,简化了常见的 CRUD 操作。它需要两个泛型参数:UserMapper
:Mapper 接口,负责数据库操作。User
:实体类,表示数据库表中的一行数据。
UserService
:这是一个 Service 接口,定义了业务逻辑方法。
继承和实现关系
- 继承
ServiceImpl
:通过继承ServiceImpl
类,UserServiceImpl
类自动具备了 MyBatis-Plus 提供的各种基础 CRUD 方法,比如save
、remove
、update
、getById
等。ServiceImpl
类已经实现了IService
接口。 - 实现
UserService
:UserService
接口可以定义额外的业务方法。UserServiceImpl
通过实现UserService
接口,可以在这个类中实现自定义的业务逻辑。