我们在写代码的时候,什么东西让我们最痛苦? 我想大部分人都会说是重复的工作,但是重复的工作又是指什么呢? 我想了想可能包含以下几点:
- 实体类
- 建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这一层