好友
阅读权限10
听众
最后登录1970-1-1
|
我回来了,今天继续分享第二部分Mybaits
2.1介绍一下Mybatis 框架
Mybatis 框架也是一个持久层框架,我觉他相对于以前的hibernate来说比较简单,把sql语句写在配置文件里,解除了代码和sql语句的耦合度,写一些复杂的查询比较灵活.
2.2.MyBatis 中# 和 $ 的区别?
这两个符号一般是在使用Mybatis编写底层SQL语句时使用,#就是一个占位符,具体的使用是#{id},而$是一个原样输出的标识,是${value},我在项目里一直是使用#,因为这样可以防止Sql注入,安全性高。
2.3.Mybatis 和 Hibernate 的区别
Hibernate 一个是全封装,mybatis 是半封装,使用 hibernate 做单表查询操作的时候比较简单(因为 hibernate 是针对对象进行操作的),但是多表查询起来就比较繁琐了,比如说5 张表 10 张表做关联查询,就算是有 SQLquery 那后续的维护工作也比较麻烦,还有就是Hibernate 在 Sql 优化上执行效率上会远低于 MyBatis(因为 hibernate 会把表中所有的字段查询出来,比较消耗性能)我们以前在做传统项目方面用过 hibernate,但是现在基本上都在用 mybatis。
2.4.Mybatis 缓存?
mybatis 一级缓存是 SqlSession 级别的缓存,默认支持一级缓存,不需要在配置文件去配置。mybaits 的二级缓存是 mapper 范围级别,除了在 SqlMapConfig.xml 设置二级缓存的总开关,还要在具体的 mapper.xml 中开启二级缓存:
2.5.Mybatis 里多对多如何处理? 举个多对多的例子?
比如说学生表和课程表,一个学生可以选择多门课程, 一门课程都能被多个学生选择,这样两张表的关系就是多对多的关系, 怎么处理多对多的情况? 遇到这种情况我们得创建一张中间的桥表,关联后就是 课程表对桥表就是一对多,学生表对桥表也是一对多,就可以了.
3.1 SpringMVC 的工作原理
1. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;
2. DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL调用 HandlerMapping 将请求映射到处理器 HandlerExecutionChain;
3. DispatchServlet 根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理;
4. Handler 对数据处理完成以后将返回一个 ModelAndView()对象给 DisPatchServlet;
5. Handler 返 回 的 ModelAndView() 只 是 一 个 逻 辑 视 图 并 不 是 一 个 正式 的 视 图 , DispatcherSevlet 通 过 ViewResolver 试图解析器将逻辑视图转化为真正的视图 View;
6. DispatcherServlet 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出完整的 view 并返回给客户端;
3.2 SpringMVC 常用注解都有哪些?
@RequestMapping 用于请求 url 映射。
@RequestBody 注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。
@ResponseBody 注解实现将 controller 方法返回对象转化为 json 响应给客户
3.3 如何解决 get 和 post 乱码问题?
解决 post 请求乱码:我们可以在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器。设置为 utf-8. 解决 get 请求的乱码:有两种方法。
对于 get 请求中文参数出现乱码解决方法有两个:1. 修改 tomcat 配置文件添加编码与工程编码一致。
2.另外一种方法对参数进行重新编码StringuserName=NewString(Request.getParameter(“userName”).getBytes(“ISO8859-1”),“utf-8”);
今天就先分享到这,最近活开始多起来了,我会找时间整理给大家慢慢发出来,准备找工作的小伙伴们可以先在家好好准备,最近疫情原因也不好出去面试,最后祝大家都能找到好工作!
|
-
springmvc执行流程
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|