我們在寫代碼的時候,什麼東西讓我們最痛苦? 我想大部分人都會說是重複的工作,但是重複的工作又是指什麼呢? 我想了想可能包含以下幾點:
- 實體類
- 建sqlMapper.xml,或者其他框架的註解映射
- 建DAO去關聯sqlMapper.xml,或者用代碼去替代sql
- Controller
所以我在想,如果可以不需要實體類,不需要sqlMapper.xml,不需要Controller就好了,這樣一來,如果需要開發一個後端功能,只需要寫Service就好了,而這一段幾乎是編程中最有樂趣的地方(僅限應用層編程,底層研發的當我沒說)
而Mars-java就是在這樣的一個思路下誕生的
- 只需要在Service的父接口上加上兩個註解,即可對外提供一個http接口,又或者可以重新創建一個interface+註解 去代替Controller
- 操作數據庫只需要一行註解,沒有sqlMapper.xml
- 如果你能夠接受無實體類編程的話,可以不創建實體類,而採用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這一層