一個電商專案的Web服務化改造4:方案和架構,通用介面的定義和實現
最近一直在做一個電商專案,需要把原有單系統架構的專案,改造成基於服務的架構,SOA。
有點挑戰,做完了,會有很大進步。
上一篇,我們明確了我們的“規範和約定”。
從本篇開始,寫具體的方案和架構。
本篇,重點闡述通用介面定義。
既然做了分表,那麼針對單表的CRUD等很多程式碼,都是一樣的,類似的,因此,定義通用的介面和實現。
就可以配置模版,自動化生成程式碼啦,後面再詳細介紹程式碼自動化生成。
BaseMapper通用的sql介面定義
上一篇,我們明確了我們的“規範和約定”。
從本篇開始,寫具體的方案和架構。
本篇,重點闡述通用介面定義。
既然做了分表,那麼針對單表的CRUD等很多程式碼,都是一樣的,類似的,因此,定義通用的介面和實現。
就可以配置模版,自動化生成程式碼啦,後面再詳細介紹程式碼自動化生成。
BaseMapper通用的sql介面定義
import java.util.List;
public interface BaseMapper<ID, Entity,Bean> {
//read
Entity get(ID id);
List<Entity> listByIdList(List<String> idList);
List<Entity> list(Bean bean);
List<Entity> listAll();
//write
int add(Entity entity);
int update(Entity entity);
int updateByMemberId(Entity entity);
int remove(ID id);
int removeByIdList(List<ID> idList);
}
BrandMapper具體的Mybatis介面定義,繼承BaseMapper,再新增自己特殊的sql對映介面定義
@Mapper
public interface BrandMapper extends BaseMapper<String, Brand,BrandBean> {
//---------------------read-------------------------
List<Brand> listByShopIdList(List<String> shopIdList);
//---------------------write-------------------------
}
BrandMapper.xml 品牌表的Mybatis sql語句
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.webservice.mapper.BrandMapper">
<sql id="columns">
id,name,logo,createTime,updateTime,isDelete
</sql>
<select id="get" resultType="Brand">
select
<include refid="columns" />
from brand
where id =
#{id}
</select>
<select id="list" resultType="Brand">
select
<include refid="columns" />
from brand where
isDelete=0
<if test="name != null and name !=''">
and name like '%${name}%'
</if>
order by createTime desc
</select>
<select id="listAll" resultType="Brand">
select
<include refid="columns" />
from brand where
isDelete=0 order by createTime desc
</select>
<select id="listByShopIdList" parameterType="String" resultType="Brand">
select
<include refid="columns" />
from brand where merchantId in
<foreach collection="list" index="index" item="item" open="("
separator="," close=")">
#{item}
</foreach>
</select>
<select id="listByIdList" parameterType="String" resultType="Brand">
select
<include refid="columns" />
from brand where id in
<foreach collection="list" index="index" item="item" open="("
separator="," close=")">
#{item}
</foreach>
</select>
<insert id="add" parameterType="Brand">
insert into brand
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="name != null">
name,
</if>
<if test="logo != null">
logo,
</if>
createTime,
updateTime
</trim>
<trim prefix="values(" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id},
</if>
<if test="name != null">
#{name},
</if>
<if test="logo != null">
#{logo},
</if>
now(),
now()
</trim>
</insert>
<update id="update" parameterType="Brand">
update brand
<set>
<if test="name != null">
name = #{name},
</if>
<if test="logo != null">
logo = #{logo},
</if>
updateTime=now()
</set>
where id=#{id}
</update>
<update id="remove" parameterType="String">
update brand set isDelete
=
1,updateTime=now() where id=#{id}
</update>
<update id="removeByIdList" parameterType="String">
update brand
set isDelete = 1,updateTime = now()
where
id in
<foreach item="item" index="index" collection="list" open="("
separator="," close=")">
#{item}
</foreach>
</update>
</mapper>
更多介面的定義和實現,後面再介紹。
相關文章
- 一個電商專案的Web服務化改造Web
- 一個電商專案的Web服務化改造7:Dubbo服務的呼叫,4個專案Web
- 一個電商專案的Web服務化改造2:現有專案的5個問題Web
- 一個電商專案的Web服務化改造3:改進方案の規範和約定、單表、單一職責Web
- 高德服務單元化方案和架構實踐架構
- 一個電商專案的Web服務化改造6:單元測試4步走,構造資料、執行操作、斷言、回滾Web
- 介面的定義和實現
- 【CuteJavaScript】Angular6入門專案(4.改造元件和新增HTTP服務)JavaScriptAngular元件HTTP
- Web專案架構優化單臺機器到叢集服務Web架構優化
- 如何定義和建立架構架構
- 談架構中介面的定義架構
- 微服務架構的4大設計原則和一個平臺實踐微服務架構
- Spring Cloud 微服務專案實現總架構一SpringCloud微服務架構
- 車聯網服務non-RESTful架構改造實踐REST架構
- 虎牙直播在微服務改造方面的實踐和總結微服務
- 搜狐服務架構優化實踐架構優化
- 架構設計:服務自動化部署和管理流程架構
- 微服務架構的Akka實現和Docker部署案例微服務架構Docker
- 深度理解React專案的服務端渲染改造React服務端
- 微服務架構大型電商專案開發流程及技術實戰微服務架構
- WCF 設計和實現服務協定(01)
- 用 GIN 構建一個 WEB 服務Web
- 如何利用memcached和wcf實現一個快取服務快取
- 機器學習web服務化實戰:一次吐血的服務化之路機器學習Web
- 練手專案,實現一個web框架Web框架
- 微服務的架構演進過程和多個解決方案微服務架構
- EF架構~EF非同步改造之路~倉儲介面的改造架構非同步
- webpack 專案接入Vite的通用方案介紹(上)WebVite
- 平臺化專案多語言架構實現架構
- Java專案Docker化改造(一)JavaDocker
- golang 同時(一個專案)註冊http和GRPC服務GolangHTTPRPC
- 一個知名網站的微服務架構最佳實現網站微服務架構
- 微服務架構專案實戰:Spring Boot 如何建立簡單的 REST 服務微服務架構Spring BootREST
- 使用Spring Boot實現微服務架構的開源專案Spring Boot微服務架構
- 架構之:微服務和單體服務之爭架構微服務
- 乾淨架構在 Web 服務開發中的實踐架構Web
- Go 專案配置檔案的定義和讀取Go
- 大專案為服務架構設計思維架構