コントローラ層、サービス層、マッパー層、エンティティ層の役割とつながり。

 

1.コントローラーレイヤー

コントローラ層は、フロントエンド データを受信し、ページ要求情報を返すために使用されます。

コントローラ層は、データベースを直接操作することはできません! それはウェイターのようなもので、テーブルのゲストが注文する必要があるのは、ウェイターに電話するだけです! 
これに対応して、外の世界でどのようなビジネスを完了する必要があるか、コントローラーを介してさまざまなサービスを呼び出す必要があります.コントローラーは単なる仲介者または転送者であり、サービスのビジネスロジックはコントローラーに公開されるべきではないことに注意してください. 、しかし、サービスは直接転送する必要があります. 業務処理結果! 
制御層は、特定のモジュールのビジネス プロセス制御を担当し、ビジネス プロセスを制御するには、サービス ロジック設計層のインターフェイスを呼び出す必要があります。
コントローラは、フロントエンドのH5やAppからパラメータを受け取って業務処理を行い、処理結果をフロントエンドに返します。
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserMapper userMapper;
    
    @GetMapping("/select")
    public List<User> index(){
        List<User> all = userMapper.findAll();
        return all;
    }

    @Autowired
    private UserService userService;
    @PostMapping("/insert")
    public boolean save(@RequestBody User user){
        return userService.saveUser(user);
    }

    @DeleteMapping("/{id}")
    public Integer delete(@PathVariable Integer id){
        return userMapper.deleteById(id);
    }

2.サービス層

サービス層は、コントローラー層から情報を受け取り、業務処理や論理判断を行います。サービスはビジネス ロジックを処理するために使用され、マッパー レイヤーの API を呼び出します。

サービス レイヤーはビジネス ロジック レイヤーであり、複雑なビジネス ロジック処理を実行し、複数のマッパー レイヤーで見つかったデータを組み立てて処理し、結果を返します。したがって、コントローラーの場合、通常の状況では、コントローラーには複数のサービスが含まれる場合があり、
サービスには複数のマッパーが含まれる場合があります。
(例) コントローラ層はレストランのマネージャー、サービスはウェイター、マッパー層は厨房倉庫です。
ビジネス サービス レイヤーは、コントローラー レイヤー内のクラスが呼び出すためのインターフェイスを提供します。一般的に、自分で書いたメソッドはカプセル化、つまり宣言されており、具体的な実装はserviceImplにあります。
public class UserService extends ServiceImpl<UserMapper, User> {
        public boolean saveUser(User user) {
            if(user.getId() == null){
            return save(user);//mybatis-plus提供的方法,表示插入数据。
            }else{
            return updateById(user);
        }
}

Three.mapperレイヤー

マッパー層 (データベースを処理するために特別に使用されるデータ永続化層)。
マッパー層はデータベースとの対話に使用されます.データベースにアクセスして操作したい場合は、SQLステートメントをマッパー層を介してデータベースに送信するだけで、その結果をインターフェイスを介してサービス層に渡し、データを実行します.データベースの永続化操作. 彼のメソッドステートメントは直接です. データベース操作については、
主にいくつかの追加、削除、変更、およびクエリ操作を実装しています. mybatis では、メソッドは主に xxx.xml で相互にマッピングされています.
@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {//数据库查询接口,专门用来跟数据库交互用的
    @Select("SELECT * from sys_user")
    public List<User> findAll();

    List<User> findAll1();
    @Insert("INSERT into sys_user(username,password,nickname,email,phone,address)VALUES(#{username},#{password},#{nickname}," +
            "#{email},#{phone},#{address});")
    public int insert(User user);

    public int updateUser(User user);

    @Delete("delete from sys_user where id = #{id}")
    public Integer deleteById(@Param("id") Integer id);

4.エンティティ層

エンティティ レイヤーは、データベース テーブル内の属性値と 1 対 1 で対応するエンティティ クラスを作成します。
エンティティ レイヤーは、基本的にデータベース内の属性値と一致するエンティティ クラスを格納し、set メソッドと get メソッドを実装するか、アノテーションを使用するために使用されます。
@Data//Data注解代替了get和set方法
@TableName(value = "sys_user")
public class User {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String username;
    private String password;
    private String nickname;
    private String email;
    private String phone;
    private String address;
}

おすすめ

転載: blog.csdn.net/qq_45139808/article/details/125870976