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;
}