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

因为自己一直使用的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 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 selectBaseInfo( SandTableBaseInfoModel model  );
	void insertBaseInfo(  SandTableBaseInfoModel model );
	void updateBaseInfo( SandTableBaseInfoModel mdoel );
	void deleteBaseInfo(String rowId); //方法名要告诉前端。

}

SandTableMapper.xml




	
	

	
	
		

		 
		
		
		
		
		
		
		
	

	
	



	
	
					update   SIEBEL.T_ACCOUNT_BASEINFO
						
							CREATED = systimestamp,
							LAST_UPD =  systimestamp,
							LAST_UPD_BY = #{loginId},
							 RELATION = #{relation} 
					
					where ROW_ID = #{rowId}
	
	
	
	
	

你可能感兴趣的:(Java)