看看男人日女人,亚洲欧美日韩日本国产三,国产精品欧美日韩区二区,妓女影库妓女网在线视频

摸魚技巧-mybatis動(dòng)態(tài)sql實(shí)現(xiàn)接口配置查詢

很多公司內(nèi)部為了效率,在一些后臺管理系統(tǒng)上開始使用低代碼工具。

今天我們就講下 如果通過mybatis的動(dòng)態(tài)sql,簡單實(shí)現(xiàn)一個(gè)接口配置查詢功能。技術(shù)棧 springboot、mybatis、mysql

(一)在mysql新增兩張表。api_config 是配置 接口路徑 和sql的關(guān)系的。userinfo 是查詢測試表(自己隨意建立 我就不貼圖了)。

摸魚技巧-mybatis動(dòng)態(tài)sql實(shí)現(xiàn)接口配置查詢

(二)先寫 api_config的查詢代碼,這里就是基本的 mybatis使用方法。mapper類、service類、以及mapper xml文件

  @Servicepublic class ApiConfigService { @Autowired private ApiConfigMapper apiConfigMapper; public ApiConfig getApiConfig(String urlPath,String method){ return apiConfigMapper.getApiConfigByPath(urlPath,method); }

@Mapperpublic interface ApiConfigMapper { ApiConfig getApiConfigByPath(@Param("urlPath") String urlPath, @Param("method") String method);}

<mapper namespace="com.example.mapper.ApiConfigMapper"> <select id="getApiConfigByPath" resultType="com.example.entity.ApiConfig"> select * from api_config where url_path = #{urlPath} and method=#{method} </select></mapper>

(三)cotroller 接收 url請求。

這里我們需要接收符合規(guī)則的所有請求。通過 spring requestMapping 內(nèi)地模糊匹配來實(shí)現(xiàn)。如下@GetMapping("/get/*")

1、獲取請求地址

2、獲取請求方法

3、根據(jù)請求地址和請求方法 查找 對應(yīng)的sql是什么。

4、將 請求參數(shù) 以及 對應(yīng)的sql 放到 paramMap參數(shù)中。

這里我先實(shí)現(xiàn)Get請求,post請求 大家可以自行去實(shí)現(xiàn)。

      @RestController@RequestMapping("/api")public class UserController { @Autowired private ApiService apiService; @Autowired private ApiConfigService apiConfigService; @Autowired private HttpServletRequest request; @GetMapping("/get/*") public Object getUser(@RequestParam(required = false) Map<String,Object> requestMap){ String requestPath = request.getServletPath(); String method = request.getMethod(); ApiConfig apiConfig = apiConfigService.getApiConfig(requestPath,method); ParamMap paramMap = new ParamMap(); paramMap.putAll(requestMap); paramMap.setSql(apiConfig.getSql()); return apiService.getResult(paramMap); }

(四)apiService 比較簡單 如下

@Servicepublic class ApiService { @Autowired private ApiMapper apiMapper; public ResultMap getResult(ParamMap paramMap) { List<Map<String,Object>> list = apiMapper.selectList(paramMap); ResultMap resultMap = new ResultMap(); resultMap.put("data",list); return resultMap; }}        

(五)這里是重點(diǎn)、重點(diǎn)、重點(diǎn)。我們來看 ApiMapper類 如何通過動(dòng)態(tài)sql 來實(shí)現(xiàn)查詢的。

1 類里只有一個(gè) 方法 selectList 。返回 使用的 是 List<Map<String,Object>> 。

其中Map<String,Object> 存的是 表中一條記錄 的各個(gè)字段值。

List 就代表 查詢出的多個(gè)記錄。

2 我們不寫xml文件了。這里用了 SelectProvider注解類,注解類有兩個(gè)參數(shù)

type 代表 sql來源于哪個(gè)類 method 代表 類里的哪個(gè)方法。

通過這種方式讓mapper類獲取執(zhí)行的代碼

     @Mapperpublic interface ApiMapper { @SelectProvider(type = SqlProvider.class,method = "provideSql") List<Map<String,Object>> selectList(ParamMap paramMap);}

3 接下來看看 SqlProvider類。非常簡單 就是將 表里配置的sql返回一下。

我給的例子就是 select * from userinfo where id=#{id}

 public class SqlProvider { public String provideSql(ParamMap paramMap){ return paramMap.getSql(); }}

(六)啟動(dòng)程序后 我們看下請求效果。請求成功

摸魚技巧-mybatis動(dòng)態(tài)sql實(shí)現(xiàn)接口配置查詢

最后,如果再開發(fā)一個(gè)頁面前端配置,是不是 解放了我們后端小伙伴的雙手。當(dāng)然高并發(fā)場景就不要這么玩了。后臺管理還是可以這么玩的。

此時(shí)我們可以跟領(lǐng)導(dǎo)說這幾個(gè)接口開發(fā) 后端需要3天,實(shí)際 30分鐘整完。剩下的時(shí)間是不是就可以摸魚了。

摸魚技巧-mybatis動(dòng)態(tài)sql實(shí)現(xiàn)接口配置查詢

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
在線咨詢
分享本頁
返回頂部
郧西县| 佛冈县| 安达市| 信丰县| 临夏县| 定南县| 武定县| 金山区| 泽库县| 内丘县| 浦东新区| 团风县| 新闻| 明星| 固原市| 海晏县| 化隆| 白玉县| 通渭县| 茂名市| 五华县| 九江县| 新平| 黄梅县| 大丰市| 潮州市| 昭苏县| 松潘县| 怀宁县| 元谋县| 孟村| 沐川县| 晋江市| 浦北县| 巴中市| 宝兴县| 萨迦县| 英吉沙县| 金平| 两当县| 思南县|