我是一个刚刚进入职场的小白,怀着对于试试的心态来发表自己的第一篇文章,该文章有借鉴之处,如有冒犯,请多关照!公司正好做了一个项目,前端采用的是vue、后端采用的是ssm框架。开发阶段进入了收尾阶段,发表一篇文章来记录一下自己对本次项目的认识。

对于后端ssm框架的认识

ssm框架是 springMVC+Spring+Mybatis的组合,是目前很流行的企业级框架,很多公司都采用了ssm来作为企业项目开发的首选

springMVC的简单认识

其实项目开发完成之后也没有对于springMVC的一个深入的了解,只是感觉springMVC开发起来是真的快,主要是因为springMVC采用了注解的方式来定义controller,不需要继承特定的类和实现接口。只需要@controller来标记controller类(@service 来定义逻辑层)、 @RequestMapping用来定义URL请求,这样一个controller层就会被外界所访问到。然后可以在这个controller层里面写你想要的接口,在接口上面直接定义 @RequestMapping(vaule = “/url”)你的接口就会直接被访问到。

springMvc中的核心组件

DispatcherServlet:前端控制器,用于接受所有的请求并进行分发。
HandlerMapping:记录了请求路径与实际处理请求的控制器之间的关系。
Controller:实际处理请求的控制器。
ModelAndView:控制器的处理结果,Model以表示处理请求时得到的响应给客户端数据。View 表示负责响应时显示的视图名称。
ViewResolver:根据视图名称,确定视图组件。

springMVC中的注解

@RequestMapping:映射请求,通过他来指定控制器可以处理那些url请求,可以在方法与类中声明。
属性:value用于指定请求的Url,此属性和path的作用是一样的。
method:用于指定请求的方式。
params:用于指定限制请求参数的条件。
params = {“name”},表示请求的参数必须有name.
headers:用于指定限制的头条件
@RestController = @Controller+@ResponseBody
@Autowired:自动装配,自动查找ioc容器。
@Controller:标记在Controller类上面的,用于指示spring类的实例
是一个控制器。并且可以同时请求多个请求。
@ResponseBody:该注解是springMvc中用于方便json与String实体转换的一个注解。在controller类上面添加此注解,这样我们返回 实体对象或者字符串时,会自动转换json对象传给前端。
@Service:此注解放在类上面,会自动注入到spring容器中。
@RequestBody:可以将请求体中色json字符串绑定到相应的bean上,也可以将其绑定到相应的字符串上。

对于spring的认知

spring的功能可谓是太过于强大,以至于不能用一句话或一个词来形容他。接触最多的就是ioc容器了,他可以装载bean(也就是我们Java中的类),有了这个机制,我们就不用每次使用这个类时而初始化,很少会看见new这个关键字。

对于Mybatis的认知

Mybatis是一个半自动化持久性框架,支持定制sql、存储过程、映射。对jdbc进行了封装(不用去在意注册驱动,connection和statement这个过程,只关注sql的操作即可)

Mybatis的作用

mybatis是对jdbc的封装。mybatis的操作是围绕一个sqlSessionFactory实例开展的,通过配置文件关联到各个实体类的mapper文件。mapper文件中配置了每个类对于数据库所需进行的sql语句映射。在每次与数据操作时,通过sqlSessionFactory拿到一个sqlSession,然后在执行sql命令。

Mybatis的优点和缺点

优点:
1.mybatis简单易用,容易上手。
2. sql语句统一放在xml中,方便管理。
3.解除了sql与程序代码的耦合。
4.提供映射标签,支持对象与数据库的字段关系的映射。
5.提供xml标签,支持编写动态SQL。
缺点:
1.编写sql的工作量大,尤其是字段多时或者关联表过多,容易出错。
2.由于XML中标签id是唯一的,所以在dao中额方法不支持方法的重载。
3. sql依赖于数据库,导致数据库移植性差。
4. 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)
5. DAO层过于简单,对象组装的工作量较大。
6. 不支持级联更新、级联删除。
7. 编写动态sql时,不方便调试,尤其逻辑复杂时。
8 提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。
9. 使用不当,容易导致N+1的sql性能问题。
10. 使用不当,关联查询时容易产生分页bug。
11. 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。
12. 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)
13. 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)
14. 缓存使用不当,容易产生脏数据。

Logo

前往低代码交流专区

更多推荐