干掉 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/

猜你喜欢

转载自blog.51cto.com/14619313/2454065