幹掉 Controller,簡化數據庫操作,讓你專注在業務邏輯上

我們在寫代碼的時候,什麼東西讓我們最痛苦? 我想大部分人都會說是重複的工作,但是重複的工作又是指什麼呢? 我想了想可能包含以下幾點:

  1. 實體類
  2. 建sqlMapper.xml,或者其他框架的註解映射
  3. 建DAO去關聯sqlMapper.xml,或者用代碼去替代sql
  4. Controller

所以我在想,如果可以不需要實體類,不需要sqlMapper.xml,不需要Controller就好了,這樣一來,如果需要開發一個後端功能,只需要寫Service就好了,而這一段幾乎是編程中最有樂趣的地方(僅限應用層編程,底層研發的當我沒說)

而Mars-java就是在這樣的一個思路下誕生的

  1. 只需要在Service的父接口上加上兩個註解,即可對外提供一個http接口,又或者可以重新創建一個interface+註解 去代替Controller
  2. 操作數據庫只需要一行註解,沒有sqlMapper.xml
  3. 如果你能夠接受無實體類編程的話,可以不創建實體類,而採用Map

簡單示例

如果我們需要寫一個登錄接口只需要這麼幾步

創建一個DAO

@MarsDao
public abstract class UserInfoDAO {

    // 可以返回Map也可以返回實體類
    @MarsSelect(sql = "select * from `userinfo` where uname=#{uname} and passwd=#{passwd}")
    public abstract List<Map> selectUserInfo(Map<String, Object> userInfo);
}

創建Service

按照慣例來說,我們需要先寫一個interface,再寫一個實現類

Interface

public interface UserInfoService {

  UserInfo login(Map<String, Object> userInfo);
}

實現類

@MarsBean
public interface UserInfoServiceImpl implements  UserInfoService {

  public UserInfo login(Map<String, Object> userInfo){
    // 在這裏面調用DAO
  }
}

開放一個http接口

只需要在UserInfoService上加兩個註解即可

@MarsApi
public interface UserInfoService {

  @MarsReference(beanName = "userInfoServiceImpl",refName = "login")
  UserInfo login(Map<String, Object> userInfo);
}

整個流程省掉了很多重複性的代碼,讓我們專注在Service這一層

框架官網:http://mars-framework.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章