# JavaSample **Repository Path**: xuelingfei/java-sample ## Basic Information - **Project Name**: JavaSample - **Description**: Java Sample - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-13 - **Last Updated**: 2025-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, SpringBoot, MyBatis, MySQL ## README # JavaSample ## 介绍 Java Sample ## 软件架构 Java + Spring Boot + MyBatis ## 目录结构 ~~~ JavaSample ├── src/main | ├── java/com.example.javasample | | ├── config // 配置文件 | | ├── controller // 控制器 | | ├── domain // 类 │ | | ├── Origin // 原初对象 │ | | ├── BaseEntity // 基类 │ | | ├── Tenant // 租户 │ | | ├── User // 用户 │ | | ├── Blog // 博客 │ | | ├── Post // 博文 │ | | ├── Comment // 评论 │ | | ├── Tag // 标签 │ | | ├── PostTag // 博文和标签关联关系 │ | | ├── Vehicle // 交通工具 │ | | | ├── Car // 轿车 │ | | | ├── Van // 面包车 │ | | | └── Truck // 卡车 | | | └── Book // 书籍 | | ├── mapper // mapper 接口 | | ├── service // 服务层接口 │ | | └── impl // 接口实现 | | └── JavaSampleApplication // 启动类 │ └── resources │ ├── sql │ | ├── data.sql // 初始化数据 │ | └── schema.sql // 数据库表结构 │ ├── mapper // mapper 映射文件 │ └── application.yml // 项目配置 └── pom.xml // 项目依赖 ~~~ ## 用法实例 ### MyBatis 基本使用 - [在 pom.xml 中添加依赖](pom.xml) -> [在 application.yml 中配置](src/main/resources/application.yml) -> [在 JavaSampleApplication.java 中添加注解](src/main/java/com/example/javasample/JavaSampleApplication.java) -> [定义 mapper 接口](src/main/java/com/example/javasample/mapper) -> [对应 XML 映射文件](src/main/resources/mapper) - Origin([class](src/main/java/com/example/javasample/domain/Origin.java)/[sql](src/main/resources/sql/schema_init.sql)) -> OriginMapper([interface](src/main/java/com/example/javasample/mapper/OriginMapper.java)/[xml](src/main/resources/mapper/OriginMapper.xml)) -> [IOriginService](src/main/java/com/example/javasample/service/IOriginService.java) -> [OriginServiceImpl](src/main/java/com/example/javasample/service/impl/OriginServiceImpl.java) -> [OriginController](src/main/java/com/example/javasample/controller/OriginController.java) ### MyBatis 高级映射 场景:某位作者的博客(Blog),有很多博文(Post),每篇博文有零或多个标签(Tag),每篇博文下面有零或多条评论(Comment) ~~~ ┌──── PostTag ───┐ Blog ── Post ── Comment ── Tag ~~~ [BlogMapper.xml](src/main/resources/mapper/BlogMapper.xml) ### MyBatis 特殊标签使用 - 关联和集合:`association`、`collection` [BlogMapper.xml](src/main/resources/mapper/BlogMapper.xml) - 鉴别器:`discriminator` ~~~ ┌── Vehicle────┐ | | | Car Van Truck ~~~ [VehicleMapper.xml](src/main/resources/mapper/VehicleMapper.xml) ### 映射器注解 [UserMapper.java](src/main/java/com/example/javasample/mapper/UserMapper.java) ### MyBatis-Plus 通用 Mapper 使用 Tenant 增删改查 Tenant([class](src/main/java/com/example/javasample/domain/TenantDO.java)/[sql](src/main/resources/sql/schema_init.sql)) -> TenantMapper([interface](src/main/java/com/example/javasample/mapper/TenantMapper.java)/[xml](src/main/resources/mapper/TenantMapper.xml)) -> [ITenantService](src/main/java/com/example/javasample/service/ITenantService.java) -> [TenantServiceImpl](src/main/java/com/example/javasample/service/impl/TenantServiceImpl.java) -> [TenantController](src/main/java/com/example/javasample/controller/TenantController.java) ### MyBatis-Plus 通用 Service 使用 User 增删改查 User([class](src/main/java/com/example/javasample/domain/UserDO.java)/[sql](src/main/resources/sql/schema_init.sql)) -> UserMapper([interface](src/main/java/com/example/javasample/mapper/UserMapper.java)) -> [IUserService](src/main/java/com/example/javasample/service/IUserService.java) -> [UserServiceImpl](src/main/java/com/example/javasample/service/impl/UserServiceImpl.java) -> [UserController](src/main/java/com/example/javasample/controller/UserController.java) ### MyBatis-Plus 逻辑删除、条件构造器 - 逻辑删除:相应字段加 `@TableLogic` 注解即可 - 条件构造器: [TenantServiceImpl](src/main/java/com/example/javasample/service/impl/TenantServiceImpl.java)、 [BookServiceImpl](src/main/java/com/example/javasample/service/impl/BookServiceImpl.java) ### MyBatis-Plus 分页插件、多租户插件 - 多租户插件 [多租户插件配置](src/main/java/com/example/javasample/config/MybatisPlusConfig.java) [自定义租户处理器](src/main/java/com/example/javasample/config/CustomTenantHandler.java) - 分页插件 [分页插件插件配置](src/main/java/com/example/javasample/config/MybatisPlusConfig.java) Book([class](src/main/java/com/example/javasample/domain/BookDO.java)/[sql](src/main/resources/sql/schema_init.sql)) -> BookMapper([interface](src/main/java/com/example/javasample/mapper/BookMapper.java)/[xml](src/main/resources/mapper/BookMapper.xml)) -> [BookService](src/main/java/com/example/javasample/service/IBookService.java) -> [BookServiceImpl](src/main/java/com/example/javasample/service/impl/BookServiceImpl.java) -> [BookController](src/main/java/com/example/javasample/controller/BookController.java) ### Lombok 使用 ### Knife4j 使用 [knife4j 简单配置](src/main/resources/application.yml)