干掉 Controller,简化数据库操作,让你专注在业务逻辑上

· sherlockholmes · Created at · Last by kkmmi68 Replied at · 2312 hits
96

我们在写代码的时候,什么东西让我们最痛苦? 我想大部分人都会说是重复的工作,但是重复的工作又是指什么呢? 我想了想可能包含以下几点:

  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/

共收到 27 条回复
3Floor Deleted
4Floor Deleted
5Floor Deleted
6Floor Deleted
7Floor Deleted
8Floor Deleted
9Floor Deleted
10Floor Deleted
11Floor Deleted
12Floor Deleted
13Floor Deleted
14Floor Deleted
15Floor Deleted
16Floor Deleted
20Floor Deleted
16Floor Deleted
17Floor Deleted
18Floor Deleted
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up