SSM框架开发纪实

【我觉得框架就那么回事,不熟悉之前一切都有点懵,熟悉了之后想做什么有点照本宣科的意思,但是时间久了会忽略某些细节,又掉坑里了,所以与必要记录一下。另外,框架,大同小异,总结多了才会发现规律。】

【一、开发环境】

之前用的是eclipse+SVN这一套,已经很熟悉了。但是突然换成了IDEA+Git,有点陌生,贴几个管用的链接,感谢大神:

1、IDEA导入maven项目+运行项目:https://blog.csdn.net/shiralwz/article/details/70973767

2、IDEA连接远程数据库:https://jingyan.baidu.com/article/af9f5a2d7dc46643150a4510.html

3、查看方法调用的时候,我们都知道按住Ctrl不放,鼠标点击左键就进入了方法。但是采用这种方法想看xml中的id却不行,可以下载一个MybatisX插件,点击Mapper.java文件左边黑色的按钮,就可以啦。

【Git的使用】

1、安装了TortoiseGit,一般点击右键,选择pull就可以了,但是有时在冲突发生后,pull选项没有了,如何解决?

在IDEA里,ctrl+T,选OK

然后点击merge进去看代码不一样的地方,修改成一样的,就可以pull了。

【数据库中新增数据表】

1、用过SSM或SSH框架的人都知道,新增了数据表的话,应该利用插件或工具自动生成简单java对象以及映射文件。

2、插件或工具在哪?一般源代码中的pom.xml文件中已经有mybatis的generator插件了,但是在你的IDEA中需要这样配置:https://blog.csdn.net/for_my_life/article/details/51228098

3、插件与generatorConfig.xml文件(修改自己新建的数据表和生成文件的本地存放位置)配置完毕后,运行插件,文件生成成功。如果此时运行项目不成功,可以尝试将pom.xml文件中mybatis的generator插件注释掉,再运行。

【数据传输流程】

1、处理业务逻辑要用的SQL语句放在对应的Mapper.xml文件中,注意xml文件中的id属性值不能重复,也要注意传入参数和返回参数。

2、这个id值其实就是Mapper.java文件中的方法名,注意方法参数和返回值要与xml文件中的参数类型保持一致。

3、在Service.java文件中实现业务逻辑处理,处理过程中就有可能会调用Mapper.java中的方法。

4、Controller.java文件接收前端传入的参数,并调用Service.java文件中的处理方法获得处理结果,返回给前端。

5、以上4条,逆向看去,其实就是前端调用后台接口的过程:

  • 前端调用后台Controller.java中的接口并传入参数
  • Controller.java接到参数以后调用Service.java中的方法去处理
  • 处理过程中需要用到Mapper.java中对数据库的操作
  • Mapper.xml就是来实现具体的增删查改的
  • 对数据库的增删查改,配合Service.java中的业务逻辑处理,这个处理的结果自然而然就随着接口的调用而返回给前端了。

【数据库处理细节】

因为之前用的都是手写的SQL,而且不是标准的mybatis,这次这个算是半自动SQL了,处理过程中还是遇到一些问题的。最大的问题就是mybatis插件自动生成的xml文件只有当前数据表的操作,不涉及多表操作。

1、如何返回多表查询的结果?

新建一个存放返回字段(这些字段肯定不是全部来源于当前表,还有其他相关表)的类,里面只有这些字段的定义和get()、set()方法,在Service.java中新建一个这个类的对象,用来接收这个多表查询的结果,注意让这些字段与类的变量名保持一致。

2、如何传入2个或多个参数?

新建一个类,这个类中只有这些参数的定义和get()、set()方法,然后在Controller.java文件接收到前端传过来的参数的时候,将这些参数封装在一个Param对象中。当然这个对象在调用Service.java的处理方法时,要作为参数传给Service.java中的方法,一直要传给Mapper.java中的方法,然后记得修改入参parameterType的值。

3、这样一个场景,两个数据表:表1和表2。现在向表1插入了一条新数据后,这条新数据的id值要作为表2的数据字段值插入到表2中。就用这个数据对象.getId()方法就可以获得。不过要在insert里面这样设置:

【报错信息记录】

1、项目启动是报错:

Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.mapper.CampaignInfoMapper.BaseResultMap

原因:CampaignInfoMapper.xml映射文件中存在多个相同的id。如果少数这样的情况,可能是不小心命名重复了,若是很多这样的情况,有可能是对这张表多次逆向工程,导致生成的xml文件内容并未覆盖而形成的重复。

解决办法:可以通过Ctrl+F查找相同的id,删掉重复的;或者整个映射文件删掉,重新生成。

2、运行自动生成插件失败,报错:too many connections

原因:没有将generatorConfig.xml文件中的所有信息修改成本地的。

原创文章 60 获赞 39 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u012556994/article/details/83339195