Skip to content

基础设施层

基础层是领域层和应用层的基础,它是领域层和应用层的桥梁。基础设施层的主要职责是将领域层的业务逻辑转换为可执行的操作,同时也负责处理领域层的业务规则和约束。

infrastructure 基础设施层

│   ├── infrastructure
│   │   ├── repository - 仓储设施
│   │   │   ├── impl - 实现类
│   │   │   │   ├── XXXRepositoryImpl.java
│   │   │   ├── mapper - MyBatis 映射文件
│   │   │   │   ├── XXXMapper.xml
│   │   │   ├── dataobject - 持久化对象
│   │   │   │   ├── XXXDO.java
│   │   │   ├── convert - 数据转换类
│   │   │   │   ├── XXXConvert.java
│   │   │   ├── condition - 查询条件类
│   │   │   │   ├── XXXWhereGroup.java
  1. XXXRepositoryImpl:实现类
    java
    // 实现类
    @Repository
    public class XXXRepositoryImpl implements XXXRepository {
        @Autowired
        private XXXMapper xxxMapper;    // MyBatis 映射文件
        public void save(XXXEntity xxxEntity) {
            // 业务逻辑
        }
    }
  2. 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>
  3. XXXDO:持久化对象
    java
    // 持久化对象
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class XXXDO {
        private Long id;
        private String name;
        private Integer age;
    }
  4. XXXConvert:数据转换类
    java
    // 数据转换类
    public class XXXConvert {
        public static XXXEntity doToEntity(XXXDO xxxDO) {
            // 业务逻辑
        }
    }
  5. 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;
        }
    
        // ...
    }