基础设施层
基础层是领域层和应用层的基础,它是领域层和应用层的桥梁。基础设施层的主要职责是将领域层的业务逻辑转换为可执行的操作,同时也负责处理领域层的业务规则和约束。
infrastructure
基础设施层
│ ├── infrastructure
│ │ ├── repository - 仓储设施
│ │ │ ├── impl - 实现类
│ │ │ │ ├── XXXRepositoryImpl.java
│ │ │ ├── mapper - MyBatis 映射文件
│ │ │ │ ├── XXXMapper.xml
│ │ │ ├── dataobject - 持久化对象
│ │ │ │ ├── XXXDO.java
│ │ │ ├── convert - 数据转换类
│ │ │ │ ├── XXXConvert.java
│ │ │ ├── condition - 查询条件类
│ │ │ │ ├── XXXWhereGroup.java
XXXRepositoryImpl
:实现类java// 实现类 @Repository public class XXXRepositoryImpl implements XXXRepository { @Autowired private XXXMapper xxxMapper; // MyBatis 映射文件 public void save(XXXEntity xxxEntity) { // 业务逻辑 } }
XXXMapper
:MyBatis 映射文件xml<!-- MyBatis 映射文件 --> <mapper namespace="com.nebula.framework.infrastructure.repository.mapper.XXXMapper"> <insert id="insert" parameterType="com.nebula.framework.infrastructure.repository.dataobject.XXXDO"> INSERT INTO xxx (id, name, age) VALUES (#{id}, #{name}, #{age}) </insert> <select id="selectById" resultType="com.nebula.framework.infrastructure.repository.dataobject.XXXDO"> SELECT * FROM xxx WHERE id = #{id} </select> </mapper>
XXXDO
:持久化对象java// 持久化对象 @Data @NoArgsConstructor @AllArgsConstructor public class XXXDO { private Long id; private String name; private Integer age; }
XXXConvert
:数据转换类java// 数据转换类 public class XXXConvert { public static XXXEntity doToEntity(XXXDO xxxDO) { // 业务逻辑 } }
XXXWhereGroup
:查询条件类 (这里的查询条件类是我自己封装的,你可以使用Mybatis-Plus的查询条件类)java// 查询条件类 @Data @NoArgsConstructor @AllArgsConstructor public class XXXWhereGroup extends WhereGroups { public ApiWhereGroup andIdIsNull() { addCriterion("id", EnumOperator.IS_NULL, null); return this; } public ApiWhereGroup andIdIsNotNull() { addCriterion("id", EnumOperator.IS_NOT_NULL, null); return this; } public ApiWhereGroup andIdEqualTo(Long value) { addCriterion("id", EnumOperator.EQUAL, value); return this; } public ApiWhereGroup andIdNotEqualTo(Long value) { addCriterion("id", EnumOperator.NOT_EQUAL, value); return this; } public ApiWhereGroup andIdBetween(Long value1, Long value2) { addCriterion("id", EnumOperator.GREATER_EQUAL_THAN, value1); addCriterion("id", EnumOperator.LESS_EQUAL_THAN, value2); return this; } public ApiWhereGroup andIdNotBetween(Long value1, Long value2) { addCriterion("id", EnumOperator.LESS_THAN, value1); addCriterion("id", EnumOperator.GREATER_THAN, value2); return this; } public ApiWhereGroup andIdLikeTo(Long value) { addCriterion("id", EnumOperator.LIKE, true, value, true); return this; } public ApiWhereGroup andIdLikeTo(boolean prefix, Long value) { addCriterion("id", EnumOperator.LIKE, prefix, value, false); return this; } public ApiWhereGroup andIdLikeTo(Long value, boolean suffix) { addCriterion("id", EnumOperator.LIKE, false, value, suffix); return this; } public ApiWhereGroup andIdNotLikeTo(Long value) { addCriterion("id", EnumOperator.NOT_LIKE, true, value, true); return this; } public ApiWhereGroup andIdNotLikeTo(boolean prefix, Long value) { addCriterion("id", EnumOperator.NOT_LIKE, prefix, value, false); return this; } public ApiWhereGroup andIdNotLikeTo(Long value, boolean suffix) { addCriterion("id", EnumOperator.NOT_LIKE, false, value, suffix); return this; } public ApiWhereGroup andIdIn(List<Long> list) { addCriterion("id", EnumOperator.IN, list); return this; } public ApiWhereGroup andIdNotIn(List<Long> list) { addCriterion("id", EnumOperator.NOT_IN, list); return this; } // ... }