增删改查--直接操作的数据库

因为自己一直使用的Siebel的BC,简直太方便了,师父把java和Siebel集成后,各种Model进行的增删改查简直不要太简单。根本不需要考虑类。直接使用通用的增删改,集成的时候提供BC与Model映射,getRawMapping,以及BC,BO名字,Siebel就知道什么类型的Model.比如:合同,订单,报价等等,都可以使用通用的方法。asynEdit,asynDel.
可能用的太方便了,导致我一下子意识不到自己开发的时候该怎么去进行增删改查?比如通用的,不使用Siebel BC的话。该怎么去做呢?因为你要分辨 传入的参数是哪些?类型是什么?更改的时候哪些字段是需要进行更改的?ID是怎么区分是哪个表的(合同?订单?)这些看起来还是有点复杂的。后来问了师父,师父说了,有一个模块不是用Siebel的BC,而是直接操作数据库的,增删改都要写很多类型,该模块为沙盘,又分为客户基本信息块,工作内容块,地区块,生态块,采购历史块。等都要进行CRUD.

很可能我从这里出去后,很少会再次接触Siebel.所以下面的这些CRUD才是我以后应该要写的。看看师父的代码吧:
moduel: xxxxx.crm.web
包: com.xxxxx.web.sand

C:Controller层:

/**
*沙盘模块
*/

@Controller
@RequestMapping("/sand")  
public class SandController{
		
		@Autowired
		SandTableMapper mapper;

		@Autowired
		ContractController contractController;
		
		//客户基本信息块--查询列表
		@RequestMapping("/selectBaseInfo.do")
		@ResponseBody
		public String selectBaseInfo( SandTableBaseInfoModel model )throws Exception{
			model.setLoginId(SystemUtils.getUserModel().getRowId());
			model.setLoginName(SystemUtils.getUserModel().getLoginName());
			List<?> list = mapper.selectBaseInfo(model);
			return StringUtils.resultSuccessToJson(list);
		}
	
		//删除
		@RequestMapping("/asynDelete.do")
		@ResponseBody
		public String asynDelete(String method,String rowId)throws Exception{
			if(StringUtils.isBlank(rowId)){  throw new ExceptionWithCode("sand.0008"); }
			//利用反射进行删除
			Class<? extends SandTableMapper> clazz = mapper.getClass(); //获取字节码对象
			clazz.getMethod(method,String.class).invoke(mapper,rowId);//调用方法
			return StringUtils.resultSuccessToJson(rowId);
		}
		
		//添加修改
		@RequestMapping("/asynEdit.do")
		@ResponseBody
		public String asynEditBaseInfo( @RequestBody SandTableBaseInfoModel model ,HttpServeltRequest request,HttpServletResponse response )throws 		Exception{
			model.setLoginId(SystemUtils.getUserModel().getRowId());
			ContractorModel contractorModel = new ContractorModel();
			contractorModel.setJobtitle(model.getJobTitle());
			contractorModel.setEmail(model.getEmailAddr());
			contractorModel.setBirthdate(model.getBirthday());
			contractorModel.setRowId(model.getContractId());
			conrtractController.asynEdit(contractorModel,request,response);

			if(StringUtils.isNotNullOrEmptyStr(model.getRowId())){
					mapperupdateBaseInfo(model);
				 }else{
					//新增
					model.setRowId(mapper.getNewRowId());
					mapper.insertBaseInfo(model);
				}
			return StringUtils.resultSuccessToJson(model.getRowId());

		}

//沙盘下其他块也类似。
}//类尾巴


moduel: xxxxx.crm.domain
包: com.xxxxx.domain.sand

public interface SandTableMapper{
	//获取新rowId
	String getNewRowId();
	
	//平台基础信息块
	List<SandTableBaseInfoModel> selectBaseInfo( SandTableBaseInfoModel model  );
	void insertBaseInfo(  SandTableBaseInfoModel model );
	void updateBaseInfo( SandTableBaseInfoModel mdoel );
	void deleteBaseInfo(String rowId); //方法名要告诉前端。

}

SandTableMapper.xml

<?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.xxxxx.domain.sand.SandTableMapper" >
	<!--获取下一个RowId-->
	<select id="getNewRowId"  ResultType="String">
			select s_sequence_pkg.get_next_rowid from dual
	</select>

	<!--平台基础信息-->
	<resultMap id="ResultBaseInfoMapper"  type="com.xxxxx.model.sand.SandTableBaseInfoModel" >
		<id column="ROW_ID"        property="rowId" />

		<result column=""				property="" /> 
		<result column=""				property="" />
		<result column=""				property="" />
		<result column=""				property="" />
		<result column=""				property="" />
		<result column=""				property="" />
		<result column=""				property="" />
		<result column=""				property="" />
	</resultMap>

	<!--平台基础信息-->
	<select id="selectBaseInfo"  resultMap="ResultBaseInfoMapper"  parameterType>
		select  T2.ROW_ID ,
					T1.ROW_ID AS ACC_ID,/*客户id*/
					T1.NAME AS ACC_NAME,/*客户名称*/
					T2.RELATION,/*与大话的关系*/
					T3.LAST_NAME AS CONTACT_NAME,/*姓名*/
					。。。
		from     SIEBEL.S_ORG_EXT 					  T1,
					SIEBEL.T_ACCOUNT_BASEINFO  T2,	
					....
		<where>
					T1.ROW_ID(+) = T2.ACCOUNT_ID  AND
					T2.CONTACT_ID= T3.PAR_ROW_ID(+)
					...
					<if  test ="accountId != null and accountId != '' ">AND T2.ACCOUNT_ID = #{accountId} </if>
					<if  test ="rowId!= null and rowId!= '' ">AND T2.ROW_ID = #{rowId} </if>
		</where>	
				
					order by T3.JOB_TITLE,T3.LAST_NAME	
	</select>



	<!--插入语句-->
	<select  id="insertBaseInfo" parameterType="com.xxxxx.model.sand.SandTableBaseInfoModel" >
					insert into   SIEBEL.T_ACCOUNT_BASEINFO
						(ROW_ID,CREATED,LAST_UPD......)
					select   #{rowId,jdbcType=VARCHAR}, systimestamp, systimestamp... from dual
					<!---也可以使用  values (#{rowId,jdbcType=VARCHAR}, systimestamp, systimestamp...  )->
	</select>
	
	<!--更新语句-->
	<select  id="updateBaseInfo" parameterType="com.xxxxx.model.sand.SandTableBaseInfoModel" >
					update   SIEBEL.T_ACCOUNT_BASEINFO
					<trim prefix = "set" suffixOverrides="," >	
							CREATED = systimestamp,
							LAST_UPD =  systimestamp,
							LAST_UPD_BY = #{loginId},
							<if test = "relation != null "> RELATION = #{relation} </if>
					</trim>
					where ROW_ID = #{rowId}
	</select>
	
	<!--删除语句-->
	<select id="deleteBaseInfo" parameterType = "string">
			delete from SIEBEL.T_ACCOUNT_BASEINFO  where ROW_ID = #{rowId}
	</select>
	
</mapper>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值