项目笔记:2017年(SSM架构)
一、第一部分
前后端分离后的测试工具的使用(Postman);
svn先更新再提交,冲突就把自己占位的地方让出,再提交;
maven项目也可以用tomcat直接启动;
在mybatis.xml文件中,if判断条件中,可以设置为a=null or a!=null,这样表示可以为空或者不为空;
在mybatis文件中,返回可以是一个map集合,自定义resultMap,将类属性和表字段关联,还得写出jdbcType=”值”(为数据库属性值);
可以熟悉下mybatis.xml中的trim标签;用注解data开发,不用写set/get方法,在eclipse根目录下导入lombok.jar包,在eclipser.ini文件中添加-javaagent:lombok.jarDorg.eclipse.swt.browser.IEVersion=10001;
项目可以close关闭。Svn导入项目,是maven可以转换成maven项目;
逻辑判断,一定要思路清晰,一层一层的往里推进;
在查询数据库,用mapper文件时,编写一个动态sql语句;<sql>标签下再用<trim>标签,perfixOverrides=”and” suffixOverrides=”,” 将and和,转换;下用<if >标签,里面判断!=null and !=’’;如果满足,就走该条件,不满足,就跳过该条件;
Update思路:只查询表中部分唯一字段时,传入的属性值就只传入这些唯一字段属性值;在select出来对象后,set添加其他属性值(非唯一字段),再update方法,update的条件可以设置为查询出来的任意一个属性值,这样可以update数据库中的表的值;
查询:想查询什么字段(唯一),就传入什么参数(唯一字段的);
PropertiesCopyUtil.parse(userRoleInfo_01,UserRoleSpecificInfoCriteria.class):对象字段复制工具类;
@RequestMapping()中的属性produces=”application/json;charset= UTF-8”:表示从前端接收的字符集为UTF-8;
传递参数到后端:Json对象,对象中有list集合,集合的对象中还有list集合,三层或者更多层嵌套;
定义实体response类:类{list集合<类>{list集合<类>,按照Json数据封装成响应实体类,一层一层嵌套;
mybatis.mapper.xml文件中:传入对象,<if>标签里的条件,当符合条件进入<if>标签内的sql语句,不符合条件跳到下一个<if>标签;返回Map集合,自定义一个resultMap,将实体类与数据库表字段对应;
基本数据类型用==和!=比较值;引用数据类型用equals比较对象的内容;
在已经完成的项目中添加比较大的需求,做一个项目的分支,在分支里面添加功能代码;
mapper文件出错时,检查and,’,’等错误,是sql语句的问题;
null指针异常,主要检查方法的return值。还有前端是否传送过来值,并且在后台代码中接收了该值,又赋值给其他属性;
控制台出现sql语句查询条件缺失(传入4条件,控制台只显示2、3个条件),如果mapper文件中有<if text>语句,那就是没有进去,有可能是单引号或者null的问题;
用maven工具将项目打包成war包:clear backage;刷新target目录;
部署项目先备份,将旧项目mv到备份文件夹,改名字;再将新项目移动到webapps部署;
测试查看日志:在后台文件夹下的logs文件里,有每天的日志更新,使用tail -10f(10行) –日期.logs;
退出tail –f 使用ctrl+c命令;
清屏命令ctrl+ l // clear命令;
初始化问题(nullpointException):有多个前端方法共用1个后台方法时候,后台方法分为很多个if else判断,那么就要把对象和数值的初始化,放到if或者else等的方法中;
二、第二部分
将前端包放在tomcat下的webapps下,则可以用本电脑测试,localhost:端口号/路径;如果是其他人调用本电脑,则用当前电脑ip:端口号/路径;(配置tomcat的server localtions的tomcat installation,deploy path为tomcat的前端包位置(webapps))
规范的代码,一个方法不超过100行。超过100行,则抽取方法;
Debug卡住,可能是eclipse自动加断点。此时在window-show-break-去掉左右断点即可;
接受参数,用@requestBody Class clazz,将前端传的字段赋值给该@后的对象clazz;
Mybatis,可以在IDAO的方法上加@Param(“id”) Long id,前面id为Mapper文件的parameterType传给sql语句的属性,后面的id为该方法的参数;
@Autowired注入,直接针对该类或者接口。@Resoure针对的是某类上定义的名字;大项目推荐@resource
代码里的异步请求(调用底层api):将所有请求集合分割成一定size的集合的集合(方法抽取);再遍历外层集合,将里面集合作为参数,请求api(方法抽取);将得到的数据(集合),再拼接。(都有个for循环,且用到Futrue请求返回结果)
异常的处理: a.throw出去new XXException("状态信息"),定义一个异常类XXException,在类中定义构造器,参数为状态码和状态信息。则捕获到的状态码,可以获取对应的状态信息 b.建一个AjaxResult返回结果实体类,里面包含了实体类Object ob,状态信息,状态码。定义构造器,参数为该3个参数。在方法中获取到结果集,可以new AjaxResult(),将获取的结果集当做参数传入构造器中。
三、第三部分
在服务器下的bin/xxx.sh start启动服务器;
SqlSessionFactory 错误,清理clean;
返回值给前端,按Json[]返回,则数组中每个对象不能省略,不管该对象是否有值;
mybatis对应mapper.xml文件,建2个实体类,1个实体类和mapper.xml文件的字段完全对应,作为传入参数或者返回参数。另1个实体类基本和mapper.xml文件字段对应,但是可以扩展;
定义数字字典在dao接口中,delete和update等没有返回值的方法,弄一个int返回值;
mapper.xml文件中,返回值设一个resultMap,将表字段和类属性对应;当select方法,如果查询是唯一,就返回一个实体类;如果查询不唯一,就返回list集合;
service层,做一个data资料文件夹,里面保存了映射---接收参数和传递参数;
@Service注解(“类名”),在注入的类中,用@Resource(name=”类名”),这样比较直观的知道注入与被注入的关系;
private static Logger logger = LoggerFactory.getLogger(本类.class):作用是打印日志(有的类不需要);
可以用switch(true) case A break; case B break;满足就跳出,不一定做if判断,有时候比if判断更好用(例如步骤);
propertiesCopyUtil 两个类之间复制,当两个类的属性名相同时就复制值;在实体类设置了2个entity时会用到。(一个类和mapper.xml文件对应,一个类用来扩展),当dao借口传参为criteria类,返回值为do类。如果返回值过多(两个表之间关联)(或者有集合之类),可以在service层创建一个vo类,并且继承criteria类;
点住源路径:src/main/java,右键,build path/remove from build path,在src下有resources,右键,build path/use as Source Folder(run/runConfigruations… environment /new 新建项目路径,配置文件路径value);
Java方法:去空格:trim();
ps –ef | grep 项目名:查看项目进程;
sql语句:查询最大值:exists select 1 from (
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字段;
一个对象a,在一个方法中赋值,无论是在if()还是在什么条件内;
查询数据库得到数据/从前端传过来的必要的数据,都要做非空校验,以免报nullPointExecption;
转载于:https://www.cnblogs.com/AlmostWasteTime/p/6945266.html
项目笔记:2017年(SSM架构)相关推荐
- ssm架构 开源项目_6个开源架构项目签出
ssm架构 开源项目 架构世界的变化没有软件那样快,但是架构师仍在寻找共享创新设计和思想的新方法. 开源架构运动旨在免费提供架构设计,工程图,3D渲染和文档,以根据开源许可将其集成到其他项目中. 它的 ...
- ssm架构 开源项目_如何为您的开源项目选择正确的品牌架构
ssm架构 开源项目 启动开源软件项目的大多数人并不是在等人与他们讨论品牌架构模型,而是很多人确实为他们的项目制定了长期目标,包括最终使其成为付费产品甚至是基础产品.一家为项目代码提供服务和支持的公司 ...
- ssm 新建拦截器_拦截器在springboot项目和ssm架构项目的应用
1.拦截器的主要功能 在访问某节点url前拦截客户端发来的请求,判断该请求是否符合自己定义的要求,如果不符合,返回false,该节点url的对应代码不会被执行:如果符合,返回true,可以执行该节点u ...
- 基于SSM架构的医院管理系统项目简介
想要获取本项目资料的童鞋,请仔细看本文结尾处,加"Java架构栈"--->回复 "医院管理系统" 获取!!! 1. 项目介绍 又是一年毕业季, 毕设项目一 ...
- SSM米米商城项目笔记一(数据库表创建和项目搭建)
米米商城项目笔记一(数据库表创建和项目搭建) 使用的相关技术[当前最新技术]: IDEA:2022+ JDK:1.8 MySQL:8.0+ Maven:3.8+ Tomact:9.0+ 创建数据库信息 ...
- 瑞吉外卖项目笔记+踩坑1——基础功能
导航: [黑马Java笔记+踩坑汇总]JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud/SpringCloudAlibaba+黑马旅游+谷粒商城 目录 1 ...
- 基于SSM架构的美发店会员信息管理系统
项目简介 后端框架:SSM 技术栈:Java.Springboot.Mybatis 数据库:Mysql 源码 :完整源码 项目介绍:这是一套基于SSM架构的美发店会员信息管理系统,mysql作为底层数 ...
- 基于JavaWeb JSP SSM架构的网上求职招聘系统
文件大小:788M 开发环境:Eclipse2020.JDK8.0.Tomcate 7.0.MySQL5.6 点击下载:点击下载 简要概述: 基于SSM架构的网上求职招聘系统 程序有前后台 数据库:m ...
- 涨薪神作,阿里内部火爆的实战文档和搭建项目笔记,你还怕没有项目可做吗
前言 认识一个事物最好的方式就是首先去了解它的历史. 随着Spring功能的不断丰富,版本的不断迭代发展,Spring 框架渐渐暴露出了一些问题和弊端.例如太多样板化的配置.繁琐复杂的使用过程等,我们 ...
- 【SSM架构】博客系统开发(七)-登陆界面
[SSM架构]博客系统开发7-登陆界面 1 完成效果 2 建login.jsp 3 导入静态资源 4 建login.jsp 5 配置springmvc 6 发布项目,在浏览器地址栏访问 7 所需文件下 ...
最新文章
- WYSE Thin Clinet 常用快捷键
- 闲来无事 linux cp命令的三种实现方式
- eos和以太坊有什么关系_以太坊 2.0是什么?
- java 面向组件_Java 面向对象
- linux /proc 详解
- java 开发详解_面向接口编程详解-Java篇
- 【EWM系列】SAP EWM WCU和Non-SAP系统接口
- Java-常见的工具类-字符串
- SpringBoot与任务
- html5 retina 1像素,走向视网膜(Retina)的Web时代
- Linux Shell笔记4 正则表达式
- 软考笔记——2.1进程管理、同步互斥、死锁、线程
- 数学建模之Python-支持向量回归(SVM)
- 淘宝订单信息获取接口,淘宝开放平台R2权限,淘宝开放平台订单获取接口
- Day45. 数据分析实战(1):超市运营数据分析
- 元宇宙研讨会-空间设计与交互技术构造的叙事世界
- Mybatis-Plus eq、ne、gt、lt、ge、le分别代表含义
- 调试工具-DEBUG
- 葡萄牙晋级世界杯决赛
- 查快递物流怎么查,用最新最快的查询物流的方法
热门文章
- protobuf的安装和卸载
- VS2005+cygwin编译WebKit
- Redis五种数据结构
- RobotFramework系列(二):Robot 如何编写自定义关键字
- JVM学习笔记之-执行引擎(Execution Engine)
- resource.arsc二进制内容解析 之 Dynamic package reference
- TTL_CMOS_RS232区别
- HDU 4635 Strongly connected
- IOS中将对象属性列表归档成一个plist文件中
- ubuntu-11.10-server-i386学习笔记-SVN版本服务器安装