SSM开发流程及常见问题
后端开发主要是java代码的编写,拿到详细的任务要求便可开始,开发可分为正向和逆向,
正向从entity到dao 到mapper到service到controller
逆向从业务出发,先写controller,需要什么service,便写什么service,service需要什么dao,再去编写dao,最后到entity。
正向思维较为容易理解,正常情况下一般采用正向的思维去编码
下面介绍开发的流程
1 首先根据业务,确定实体类(一般与数据库的表一一对应)和封装类(Controller返回的对象类,一般是实体类的部分字段或是实体类的List或者业务衍生出的字段的集合)
2 根据第一步的封装类,编写dao以及对应的mapper,dao的逻辑就是为了产生封装类的属性(部分属性可直接产生,还有一部分属性需要到service层对数据处理才能产生)。
3 根据业务需求,编写service层,service层对dao层产生的数据进行处理,把封装类的属性全部设置进去返回。
4 最后编写controller层代码,需提前与前端确定好URL规范,调用service得到返回的封装类,加上@ResponseBody注解返回
下面简单介绍一下常见的问题
Entity层只要足够了解业务需求,一般不会出错
Dao层mapper的编写出现错误较多,错误多出现在对mybatis语法的不了解,比如
- resultType与resultMap的区别
- 多参数查询不用写parameterType,使用占位符或者使用@Param注解
- 出现运行不出错,但是查询不到数据可能是中文的编码问题,在dbcp.xml文件中在数据库连接URL后加上useUnicode=true&characterEncoding=UTF-8,这个问题可能在本次项目中不会出现,以后要注意
- 出现运行不出错,查询到某些数据的某个字段为空,可能原因是entity类的字段名于数据库字段名不匹配
总结:dao层写一步,测一步,编写mapper之前,把你要拼接的sql语句先拿到数据库运行一遍,编写mapper后,使用Junit立即进行测试,如果不报错,把结果与数据库端的执行结果进行对比,确保不出现数据丢失等情况,如果报错,看报错信息,一般都是由于sql语句拼接有误,mybatis解析不了产生。有报错的bug是友善的,一般通过自己看或者百度就能解决。
Service层编写就看java的基础怎么样了,如果出现问题,一般也是逻辑出错,一步步的println就能解决问题(当然dao提供的数据是一定不能错的,所以测试dao一定要仔细)
关于框架集成的问题:
我们把所有的dao和service都交由spring来管理,在spring-mybatis.xml文件中,我们指定了dao的位置,所以dao层不需要手动加注解,但是service,controller层需要我们手动加上注解@Service(此注解加在Service的实现类上) @Controller。