移动CRMapp项目总结
用到的技术 oracle数据库+mybatis+spring+js+angularjs+jquery+html
在angularjs框架下,oracle,ka,service,controller,HTML五层数据传输。ng-controller对所属HTML页面的控制,index.html内套所含页面,index引入js程序和公共HTML,app.js控制跳转路由。
oracle数据库部分:
存储过程:
1.提前编译好的,运行速度快(密集访问才能体现)
2.把所有对数据库的操作全融合进存储过程里,前台只要建立一条通信通道就可以了
3.公司有自己的书写规范,前五个固定参数和两个游标rc1\rc2
SQL语句:
一些技巧,merge into,字符串操作,COLUMN_VALUE,database link导入数据,转义字符等等。
mybatis:
三种方式
第一种最常用:
commandcontroller.js→commandservice.js→opp-command-service.xml→opp-command-bex.xml→mapper-command.xml→oracle数据库
commandcontroller.js:
CommandService.getfenzuygbh($sessionStorage.cmdfz[idx].FZBH).then(function(data){$scope.ygbhs = data.answers[0];
});
commandservice.js:
service.getfenzuygbh = function(fzbh) {var params = {service: '18001414',v_fzbh: fzbh}return myHttp.post({req: params);
}
opp-command-service.xml:
<service service_code="18001414" service_name="获取分组员工编号"><businesses><service_business business_code="getfenzuygbh" business_method="" serial_no="1" business_name="获取分组员工编号" business_type="1" /></businesses>
</service>
opp-command-bex.xml:
<bex bex_code="getfenzuygbh" bex_type="4" page_mode="0" bex_cate="1" attr1="getfenzuygbh"></bex>
mapper-command.xml:
如果是普通SQL:
<select id="getfenzuygbh" parameterType="hashmap" resultType="java.util.HashMap">select * from t_ygzcy where fzbh = ${v_fzbh}
</select>
如果是存储过程:
<select id="getfenzuygbh" statementType="CALLABLE" parameterType="hashmap" resultType="java.util.HashMap"><![CDATA[ call up_mid_10000001(${v_ygbh},0,NULL,'',${v_jgid},-1,#{RC1,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=ProcResultMap},#{RC2,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=ProcResultMap}) ]]>
</select>
第二种:
commandcontroller.js→commandservice.js→opp-command-service.xml→command-atom.xml→CommandAtom.java→opp-command-bex.xml→mapper-command.xml→oracle数据库
使用java代码编辑逻辑部分,代替存储过程。
commandcontroller.js,commandservice.js与上面写法一样。
opp-command-service.xml;
<service service_code="18001405" service_name="saveCommand新建指令"><businesses><service_business business_code="saveCommandAtom" business_method="" serial_no="1" business_name="saveCommandAtom" business_type="3" /></businesses>
</service>
command-atom.xml:
<atom atom_code="saveCommandAtom" atom_name="saveCommandAtom" atom_class="com.sz.business.atom.customer.CommandAtom" atom_method="saveCommand" attr1="" attr2=""/>
CommandAtom.java:
//逻辑代码就不写了,只写调用代码
int iRetCode = FrameDao.doBexCall("saveCommand", params, result);
iRetCode = FrameDao.doBexCall("saveCmdJsr", map, result);
iRetCode = FrameDao.doBexCall("saveCmdFj", map, result);
opp-command-bex.xml,mapper-command.xml与上面一样:
<bex bex_code="saveCommand" bex_type="4" page_mode="0" bex_cate="1" attr1="saveCommand"></bex>
<bex bex_code="saveCmdJsr" bex_type="4" page_mode="0" bex_cate="1" attr1="saveCmdJsr"></bex>
<bex bex_code="saveCmdFj" bex_type="4" page_mode="0" bex_cate="1" attr1="saveCmdFj"></bex>
<insert id="saveCommand" parameterType="hashmap">insert into .......
</insert>
<insert id="saveCmdJsr" parameterType="hashmap">insert into .......
</insert>
<insert id="saveCmdFj" parameterType="hashmap">insert into ....... </insert>
js:
![](/assets/blank.gif)
angularjs:
![](/assets/blank.gif)
jquery:
进公司以来的经历
Lucene
CRM
东兴
平安移动app
银河移动crm
前端熟悉过程
功能逻辑实现
数据传递过程
数据库部分书写
我的未来期望,对框架很好奇,想深入的去了解一个产品从无到有的全过程,目前仅仅是在表面用
贴吧的每日学习记录,博客的各种技术记录。自己无法解决的勤于去问
和别人相比,我的努力还远远不够
移动CRMapp项目总结相关推荐
- 在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...
- Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器
Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库
示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...
- springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...
- IDEA设置单个文件、单个包、单个项目的编码格式
IDEA设置单个文件.单个包.单个项目的编码格式 File-> Settings-> File Enclodings 选择编码格式,确定即可. 注意:此处的编码格式设定以后,该包已经存在的 ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- 两步完成项目定时启动,java项目定时启动
两步完成项目定时设置: 在需要定时启动或运行的方法上面加上注解@Scheduled //当天只跑一次 @Scheduled(cron = "0 40 21 * * ?") 在启动类 ...
- Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决
在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决
最新文章
- as [Frame]元标签
- Docker下使用jstat查看jvm的GC信息
- JDBC--Statement,PreparedStatement,CallableStatement的区别
- Node中require方法的简单实现
- Java报表工具FineReport常见的数据集报错错误代码和解释
- 聊城大学计算机学院韩玉艳,人工蜂群优化及其在资源管理中的应用.doc
- 无法删除所有指定的值_AutoCAD所有系统变量大全
- 12如何隐藏dock栏_ iOS 13 隐藏 Dock栏,一张神奇壁纸就可以
- GARFIELD@01-25-2005
- 检测到无效的异常处理程序例程。_异常控制流(1):异常概述和基本类型
- CF991D Bishwock
- 2019java后端面试集合篇最值得收藏的(一)
- 在jsp代码添加背景图片
- java中使用activiti(工作流)
- 常见元件贴片焊接不良的解决方法
- 聚焦数字经济新基建,复杂美再获认可
- SD/eMMC初始化流程、读写流程(dwc mshc)
- 【开发教程14】AI语音人脸识别(会议记录仪/人脸打卡机)-AI人脸系统架构
- 小知识------SATA
- ThinkPad各型号Win7系统恢复光盘镜像下载【官方下载】绝对原版
热门文章
- js全部替换与保留指定字条的正则表达式应用
- 线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?
- 微信退款接口(你们遇到的坑)
- LeetCode101——对称二叉树——c++版本实现
- 整活--我是如何用OpenCV做了数字华容道游戏(附源码)
- python作用域,变量作用域
- **[UE4技巧]** Blender 和 UE4 的建模动画无缝对接(上) — 再也不用满大街找资源啦!
- 小王子PPT模板9套,是专门为幼儿园儿童打造的PPT模板
- Unity中的Vector2的使用方法
- 通俗易懂:图解10大CNN网络架构