一、第一部分

  1. 前后端分离后的测试工具的使用(Postman);

  2. svn先更新再提交,冲突就把自己占位的地方让出,再提交;

  3. maven项目也可以用tomcat直接启动;

  4. 在mybatis.xml文件中,if判断条件中,可以设置为a=null or a!=null,这样表示可以为空或者不为空;

  5. 在mybatis文件中,返回可以是一个map集合,自定义resultMap,将类属性和表字段关联,还得写出jdbcType=”值”(为数据库属性值);

  6. 可以熟悉下mybatis.xml中的trim标签;用注解data开发,不用写set/get方法,在eclipse根目录下导入lombok.jar包,在eclipser.ini文件中添加-javaagent:lombok.jarDorg.eclipse.swt.browser.IEVersion=10001;

  7. 项目可以close关闭。Svn导入项目,是maven可以转换成maven项目;

  8. 逻辑判断,一定要思路清晰,一层一层的往里推进;

  9. 在查询数据库,用mapper文件时,编写一个动态sql语句;<sql>标签下再用<trim>标签,perfixOverrides=”and” suffixOverrides=”,” 将and和,转换;下用<if >标签,里面判断!=null and !=’’;如果满足,就走该条件,不满足,就跳过该条件;

  10. Update思路:只查询表中部分唯一字段时,传入的属性值就只传入这些唯一字段属性值;在select出来对象后,set添加其他属性值(非唯一字段),再update方法,update的条件可以设置为查询出来的任意一个属性值,这样可以update数据库中的表的值;

  11. 查询:想查询什么字段(唯一),就传入什么参数(唯一字段的);

  12. PropertiesCopyUtil.parse(userRoleInfo_01,UserRoleSpecificInfoCriteria.class):对象字段复制工具类;

  13. @RequestMapping()中的属性produces=”application/json;charset= UTF-8”:表示从前端接收的字符集为UTF-8;

  14. 传递参数到后端:Json对象,对象中有list集合,集合的对象中还有list集合,三层或者更多层嵌套;

  15. 定义实体response类:类{list集合<类>{list集合<类>,按照Json数据封装成响应实体类,一层一层嵌套;

  16. mybatis.mapper.xml文件中:传入对象,<if>标签里的条件,当符合条件进入<if>标签内的sql语句,不符合条件跳到下一个<if>标签;返回Map集合,自定义一个resultMap,将实体类与数据库表字段对应;

  17. 基本数据类型用==和!=比较值;引用数据类型用equals比较对象的内容;

  18. 在已经完成的项目中添加比较大的需求,做一个项目的分支,在分支里面添加功能代码;

  19. mapper文件出错时,检查and,’,’等错误,是sql语句的问题;

  20. null指针异常,主要检查方法的return值。还有前端是否传送过来值,并且在后台代码中接收了该值,又赋值给其他属性;

  21. 控制台出现sql语句查询条件缺失(传入4条件,控制台只显示2、3个条件),如果mapper文件中有<if text>语句,那就是没有进去,有可能是单引号或者null的问题;

  22. 用maven工具将项目打包成war包:clear backage;刷新target目录;

  23. 部署项目先备份,将旧项目mv到备份文件夹,改名字;再将新项目移动到webapps部署;

  24. 测试查看日志:在后台文件夹下的logs文件里,有每天的日志更新,使用tail -10f(10行) –日期.logs;

  25. 退出tail –f 使用ctrl+c命令;

  26. 清屏命令ctrl+ l  //  clear命令;

  27. 初始化问题(nullpointException):有多个前端方法共用1个后台方法时候,后台方法分为很多个if else判断,那么就要把对象和数值的初始化,放到if或者else等的方法中;

  二、第二部分

  1. 将前端包放在tomcat下的webapps下,则可以用本电脑测试,localhost:端口号/路径;如果是其他人调用本电脑,则用当前电脑ip:端口号/路径;(配置tomcat的server localtions的tomcat installation,deploy path为tomcat的前端包位置(webapps))

  2. 规范的代码,一个方法不超过100行。超过100行,则抽取方法;

  3. Debug卡住,可能是eclipse自动加断点。此时在window-show-break-去掉左右断点即可;

  4. 接受参数,用@requestBody Class clazz,将前端传的字段赋值给该@后的对象clazz;

  5. Mybatis,可以在IDAO的方法上加@Param(“id”) Long id,前面id为Mapper文件的parameterType传给sql语句的属性,后面的id为该方法的参数;

  6. @Autowired注入,直接针对该类或者接口。@Resoure针对的是某类上定义的名字;大项目推荐@resource

    1. 代码里的异步请求(调用底层api):将所有请求集合分割成一定size的集合的集合(方法抽取);再遍历外层集合,将里面集合作为参数,请求api(方法抽取);将得到的数据(集合),再拼接。(都有个for循环,且用到Futrue请求返回结果)

  7. 异常的处理:    a.throw出去new XXException("状态信息"),定义一个异常类XXException,在类中定义构造器,参数为状态码和状态信息。则捕获到的状态码,可以获取对应的状态信息     b.建一个AjaxResult返回结果实体类,里面包含了实体类Object ob,状态信息,状态码。定义构造器,参数为该3个参数。在方法中获取到结果集,可以new AjaxResult(),将获取的结果集当做参数传入构造器中。

  三、第三部分

  1. 在服务器下的bin/xxx.sh start启动服务器;

  2. SqlSessionFactory 错误,清理clean;

  3. 返回值给前端,按Json[]返回,则数组中每个对象不能省略,不管该对象是否有值;

  4. mybatis对应mapper.xml文件,建2个实体类,1个实体类和mapper.xml文件的字段完全对应,作为传入参数或者返回参数。另1个实体类基本和mapper.xml文件字段对应,但是可以扩展;

  5. 定义数字字典在dao接口中,delete和update等没有返回值的方法,弄一个int返回值;

  6. mapper.xml文件中,返回值设一个resultMap,将表字段和类属性对应;当select方法,如果查询是唯一,就返回一个实体类;如果查询不唯一,就返回list集合;

  7. service层,做一个data资料文件夹,里面保存了映射---接收参数和传递参数;

  8. @Service注解(“类名”),在注入的类中,用@Resource(name=”类名”),这样比较直观的知道注入与被注入的关系;

  9. private static Logger logger = LoggerFactory.getLogger(本类.class):作用是打印日志(有的类不需要);

  10. 可以用switch(true) case A break;  case B break;满足就跳出,不一定做if判断,有时候比if判断更好用(例如步骤);

  11. propertiesCopyUtil  两个类之间复制,当两个类的属性名相同时就复制值;在实体类设置了2个entity时会用到。(一个类和mapper.xml文件对应,一个类用来扩展),当dao借口传参为criteria类,返回值为do类。如果返回值过多(两个表之间关联)(或者有集合之类),可以在service层创建一个vo类,并且继承criteria类;

  12. 点住源路径:src/main/java,右键,build path/remove from build path,在src下有resources,右键,build path/use as Source Folder(run/runConfigruations…    environment /new 新建项目路径,配置文件路径value);

  13. Java方法:去空格:trim();

  14. ps –ef | grep 项目名:查看项目进程;

  15. sql语句:查询最大值:exists select 1 from (

  16. select require_id,max(create_time)as create_time

    from function_requirement group by require_id

    ) s1

    where s1.require_id = function_requirement.require_id

    and s1.create_time = function_requirement.create_time

    查询创建时间为最新的相同requireId的数据;.sql语句:in ()和not in () ,表示该字段在()内或者没有在()内。()内是一个该字段的数组或者集合;可以用foreach来遍历;.sql语句:union关键字,查询2个表,将查询的相同数量的字段的值,再赋值给第一个select语句查询的字段;例如select A.a from A union select B.b from   B,将b的值赋给名字为a字段;

  17. 一个对象a,在一个方法中赋值,无论是在if()还是在什么条件内;

  18. 查询数据库得到数据/从前端传过来的必要的数据,都要做非空校验,以免报nullPointExecption;

项目笔记:2017年(SSM架构)的更多相关文章

  1. 《BI项目笔记》——微软BI项目笔记连载

    本系列文章主要是结合实际项目,加上自己的总结,整理出来的一系列项目笔记,涉及微软SQL Server2008中商务智能开发中的SSAS.SSIS模块:  准备工作: <BI项目笔记>基于雪 ...

  2. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

    Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...

  3. 项目笔记---CSharp图片处理

    原文:项目笔记---CSharp图片处理 项目笔记---CSharp图片处理 最近由于项目上需要对图片进行二值化处理,就学习了相关的图片处理上的知识,从开始的二值化的意义到动态阀值检测二值化等等,并用 ...

  4. Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid

    Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid 上一步获取QQ登录网址之后,测试登录之后本该跳转到这个界面 但是报错了: 新建oauth_callback.html & ...

  5. Django商城项目笔记No.11用户部分-QQ登录1获取QQ登录网址

    Django商城项目笔记No.11用户部分-QQ登录 QQ登录,亦即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目. 若想实现QQ登录,需要成为QQ互联 ...

  6. Django商城项目笔记No.10用户部分-登录接口

    Django商城项目笔记No.10用户部分-登录接口 添加url路由 接下来第二步,增加返回内容: 增加结果如下: 配置:上边的方法定义了返回的内容都有哪些,那这个方法jwt还不知道,需要配置: 修改 ...

  7. Django商城项目笔记No.9用户部分-注册接口签发JWTtoken

    Django商城项目笔记No.9用户部分-注册接口签发JWTtoken 我们在验证完用户的身份后(检验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需核验用户的JWT. 关于签 ...

  8. Django商城项目笔记No.8用户部分-注册接口实现

    Django商城项目笔记No.8用户部分-注册接口实现 users的view.py中增加如下代码 class RegisterUserView(CreateAPIView): "" ...

  9. Django商城项目笔记No.7用户部分-注册接口-判断用户名和手机号是否存在

    Django商城项目笔记No.7用户部分-注册接口-判断用户名和手机号是否存在 判断用户名是否存在 后端视图代码实现,在users/view.py里编写如下代码 class UsernameCount ...

  10. Django商城项目笔记No.6用户部分-注册接口-短信验证码实现celery异步

    Django商城项目笔记No.4用户部分-注册接口-短信验证码实现celery异步 接上一篇,如何解决前后端请求跨域问题? 首先想一下,为什么图片验证码请求的也是后端的api.meiduo.site: ...

随机推荐

  1. java之数据库相关

    这篇还是在回顾知识.主要是关于java连接Sqlserver2012数据库的一些方式记录,以便以后查询. 十一之内复习完这些知识就可以新学Hibernate啦(*^▽^*) 1.普通方式 注意,在连接 ...

  2. RF自动化测试

    1.自动化分层:UI层实现界面自动化,Service层实现接口自动化,Unit层实现单元测试. 2.UI自动化测试常见的工具有:QTP,AutoIt,Selenium.Selenium是做Web测试最 ...

  3. java的多态性

    class test1{    int a=3;    public test1(int a)    {        this.a=a;    }    public void aa()    {  ...

  4. Vmware 无法启动虚拟机 -VMware Workstation and Device/Credential Guard are not compatible.

    因为在学习Linux,起初尝试用Hyper-V安装Linux进行学习,之后为了方便和老师的设置一样,所以改装了VMware,所有初始设置先好后发现,虚机机无法启用. VMware也提示不支持CPU虚拟 ...

  5. numpy.convolve函数用法

    函数numpy.convolve(a, v, mode=‘full’),这是numpy函数中的卷积函数库 参数: a:(N,)输入的一维数组 b:(M,)输入的第二个一维数组 mode:{‘full’ ...

  6. JAVA获取微信小程序openid和获取公众号openid,以及通过openid获取用户信息

    一,首先说明下这个微信的openid 为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号.移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开 ...

  7. RPA答疑

    变量:部分主要对于工程中的变量进行管理和设置,支持手动拖拉至右侧画布 1全局变量:全局变量可以在整个工程中传递,被不同的子流程或函数进行调用,全局可见可调用 2 流程参数:只对子流程设置传入参数,供子 ...

  8. go的基本数据类型

    一,数据类型的介绍 在go语言中,数据类型是用于声明函数和变量的:数据类型是为了把数据分成所需内存不同大小的数据,除了在需要使用大数据的时候才会申请大内存,这样就会充分的使用内存 Go 语言按类别有以 ...

  9. (28)A practical way to help the homeless find work and safety

    https://www.ted.com/talks/richard_j_berry_a_practical_way_to_help_the_homeless_find_work_and_safety/ ...

  10. UC浏览器input文本框输入文字回车键自动提交

    这是测试今天在jira给我提出的一个bug 下面是贴的代码 屏蔽或者禁止回车键 <!DOCTYPE html> <html> <head> <meta cha ...