1.@RequestBody与@ResponseBody
@RequestBody:表示将接收的Json串转化为对象,前端直接传入Js对象,网页会解析成json串,后端接参需用@RequestBody
@ResponseBody:将对象转化为Json串;表示该方法的返回值都是json串格式,如果返回string类型,则原数据返回
2.关于跨域访问
@Crossorign:同源策略问题:协议://域名:端口号均相同.浏览器的访问地址,Ajax的请求地址
http协议端口号默认是:80,https协议默认的端口号:443
域名与ip对应
3.Mybatis
Mybayis是一款持久性框架,内部封装了JDBC,简化了操作数据库的过程,它支持自定义SQl,存储过程以及高级映射
Spring的测试类:@SpringBootTest,Spring为了后期测试代码方便,专门针对于测试方法,开发了一个注解,从Spring容器中动态获取对象
4.编辑映射文件
<select id="findUserById" resultType="com.jt.pojo.User">
select * from demo_user where id= #{id}
</select>
id :与Maper中的方法名对应;
resultType:Mybatis自动将结果集数据封装为对象,如果返回值为List集合,则自动封装为List,User充当其泛型对象
如果service层多值传参,需要在mapper层方法中使用@Param("xxx"),封装为map集合
> > < < & &
问题说明: 前端数据传递时可能会有null数据. 如果数据为null则不能充当where条件,
解决方案: 动态Sql实现
语法:
<if test="判断条件"> id = #{id}</if>
true: 则拼接标签内容
false: 则不拼接标签内容
<where>标签: 去除where后边多余的and/or <set>标签 去除多余1个,号
5.ResultMap语法
规则:
1.如果数据库中的表字段名称与POJO属性的名称不一致
则mybatis无法自动完成映射.
2.Mybatis提供了一个属性resultMap(使用最多的).
支持用户手动映射.
Mybatis中的结果集的字段名称如果与属性的名称满足驼峰映射的规则. 如果开启驼峰映射.,则可以实现自动化的映射.
@MapperScan("com.xx.xx")根据指定的包路径,创建接口对象交给spring容器管理
6.Mybatis缓存
作用:对于相同sql查询的数据库,引用缓存机制,可极大的提高用户查询的效率
缓存机制说明:由同一个sqlSessionFactory(类比连接池)生产的sqlSession(数据库连接)实现数据的共享
一级缓存:Mybayis默认开启,在同一个sqlSession内,实现数据库的共享.利用@Transactional的事务的注解,将多个SqlSession控制为一个.
二级缓存:由同一个sqlSessionFactory生产的多个sqlSession,可以在多线程条件下实现数据的共享,对象必须序列化,二级缓存默认条件下是开启的,但需要使用<cache/>标识在哪里使用二级缓存.
7.SpringBoot框架
springboot是一款服务框架的框架,主要服务是简化配置,spring的出现是为了通过注册bean的方式来管理类,但随着业务的增加,使用xml文件配置bean的方式变得繁琐,springboot可以简化传统框架的配置文件,以注解的方式(开箱即用)简化开发过程
8.关于请求注解总结
普通请求(?id=1) | Get/Delete 对象,属性单独直接接参,无注解,,如果接收名字不一样需@RequestParm |
Post/Put 接参需添加@RequestBody | |
Restfor请求(/{id}} | Get/Delete 单独接参:@PathVariable 对象可直接接参 |
Post/Put 单独接收@PathVariable 对象可直接接参 |
9.MybatisPlus
核心思想:用面向对象的方式操作数据库,映射关系:数据库表与对象,对象属性与字段一一映射,
特点:无侵入,损耗小,强大的crud,支持主键自动生成,代码生成器等