springboot中mapper和controller的关系,

2021-04-11  本文已影响0人  黑点

以获取用户发送的json数据,并返回同样的数据为例,讲解@RequestMapping的用法以及mapper和controller的关系

UserController中可以使用@RequestMapping捕获数据请求,以实例化构造方法的方式来对数据进行处理和response

@RequestMapping(value = "/test",produces="application/json")
//构造方法 这个方法是UserController类中的一个方法,跟mapper类没有关系
public String getUserRequest(@RequestBody String jsonString){
    return jsonString;
}

在一般情况下,都需要mapper对数据进行处理以及反馈。比如数据库的操作,以及返回相应的数据。
这时候 需要注入一个实例化对象,以这个实例化对象调用方法的方式完成操作步骤。

2.5前注入方式:

  @Override
  private UserTestMapper userTestMapper;

2.5后官方推荐的方式:

final private UserTestMapper userTestMapper;
    public UserController(UserTestMapper userTestMapper) {
        this.userTestMapper = userTestMapper;
    }

这时候就会需要用到mapper接口,创建一个mapper接口(Interface)UserTestMapper声明一个你需要的方法。同时在mapper目录下impl文件夹中创建mapper的实现UserTestMapperImpl。因为mapper文件夹会被自动获取,interface中只保留接口能降低资源占用。在调用interface中的方法时候,就可以找到对应的implement。所以mapper目录下放接口,子目录中放这些接口的实例。

package com.neo.mapper;
public interface UserTestMapper {
    String getJsonReturnHello(String json);
}
package com.neo.mapper.impl;
import com.neo.mapper.UserTestMapper;
import org.springframework.stereotype.Component;

@Component
public  class UserTestMapperImpl implements UserTestMapper {
    @Override
    public String getJsonReturnHello(String json) {
        return "hello!";
    }
}

这时候就可以在controller构造mapper中声明的方法主体了

@RequestMapping(value = "/getJsonTest2",produces = "application/json")
// @RequestBody可以获取用户request的主体
public String getUserTestMapper(@RequestBody String jsonString){
    return jsonString;
}

这样就可以在Controller中进行调用UserTestMapper创建的方法了

 @RequestMapping(value = "/getJsonTest2",produces = "application/json")
    public String getUserTestMapper(@RequestBody String jsonString){
        String result = userTestMapper.getJsonReturnHello(jsonString);
        return result;
    }
上一篇下一篇

猜你喜欢

热点阅读