zoukankan      html  css  js  c++  java
  • 一个电商项目的Web服务化改造4:方案和架构,通用接口的定义和实现

        最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA。
        有点挑战,做完了,会有很大进步。

       上一篇,我们明确了我们的“规范和约定”。

       从本篇开始,写具体的方案和架构。

        本篇,重点阐述通用接口定义。

        既然做了分表,那么针对单表的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>  

     
       更多接口的定义和实现,后面再介绍。
  • 相关阅读:
    【思维】P5461 赦免战俘——两种有趣思路,分析推导
    雍正剑侠图人物关系图(2014-11-24 更新)思海整理
    h5 jq实现瀑布流
    jQuery省级联动
    jQuery 分页kkpager
    js jquery 常用函数集合
    h5 富文本编辑器
    向上取整,向下取整,四舍五入等
    前端常用的三大缓存
    jquery 跳转,刷新,返回,判断浏览器型号
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462428.html
Copyright © 2011-2022 走看看