springboot注解说明+项⽬l的配置+mybatis的使
⽤
@Controller与@RestController的区别
⼀.知识点:@RestController注解相当于@ResponseBody + @Controller合在⼀起的作⽤
1. // ⼀般⽤于接⼝或前后端分离
1.如果只是使⽤@RestController注解Controller,则Controller中的⽅法⽆法返回jsp,html页⾯,配置的视图解析器InternalResourceViewResolver不起作⽤,返回的内容就是return ⾥的内容。
// ⼀般⽤于后台页⾯
2.如果需要返回到指定页⾯,则需要⽤@Controller配合视图解析器InternalResourceViewResolver才⾏。如果需要返回JSON,XML或⾃定义mediaType内容到页⾯上,则需要在对于对应的⽅法上@ResponseBody注解。
例如:
使⽤@Controller 注解,在对应的⽅法上,视图解析器可以解析return 的jsp,html页⾯,并且跳转到相应页⾯
若返回json等内容到页⾯,则需要加@ResponseBody注解
@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在⽅法前⾯加
@ResponseBody注解了,但使⽤@RestController这个注解,就不能返回jsp,html页⾯,视图解析器⽆法解析jsp,html页⾯
总结:返回页⾯⽤@Controller,要想返回数据就⽤@RestController,这个注解对于返回数据⽐较⽅便,因为它会⾃动将对象实体转换
为JSON格式。
⼆.@Autowired 注⼊Service服务对象
三.@RequestBody 主要⽤于接收前端传递给后端的json字符串中的数据(请求体中的数据)
GET⽅式⽆请求体,所以使⽤@RequestBody接收数据时,前端不能使⽤Get⽅式提交数据,⽽是⽤POST⽅式进⾏提交。
例如
$.ajax({
Type:“post”,
url:encodeURI(http地址)
processData:true,
contentType:”application/json;charset=UTF-8”,//数据类型
data:JSON.dition)
success:function(msg){
},
error:function(jqXHR,testStatus,errorThrown){
}
});
在后端的同⼀个接收⽅法⾥,@RequestBody与@RequestParam()可以同时使⽤,@RequestBody最多只能有⼀个,⽽
@RequestParam()可以有多个。
附:@RequestBody最多只能有⼀个,⽽@RequestParam()可以有多个。
RequestBody 接收的是请求体⾥⾯的数据;⽽RequestParam接收的是key-value⾥⾯的参数,所以它会被切⾯进⾏处理从⽽可以⽤普通元素、数组、集合、对象等接收)。
注:如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才⾏(不管其是否有值),如果没有xxx名的话,那么请求会出错,报400
四.@repository⽤来注解接⼝,作⽤是:将接⼝交给spring管理(在spring中开启对@repository注解的扫描),当哪些地⽅需要⽤这个实现类作为依赖时,就可以注⼊了。
Repository是仓库管理员,领域层需要什么东西只需告诉仓库管理员,由仓库管理员把东西拿给它,并不需要知道东西实际放在
哪。Repository模式主要是封装数据查询和存储逻辑;
五.@RequestMapping是⼀个⽤来处理请求地址映射的注解,可⽤于类或⽅法上。⽤于类上,表⽰类中的所有响应请求的⽅法都是以该地址作为⽗路径。⽐如图⼀中,跳转到登录页⾯的路径就是localhost:8080/xxx-war/user/toLogin
六.@Component 相当于实例化类的对象。
Service,Controller,Repository分别标记类是Service层类,Controller层类,数据存储层的类,spring扫描注解配置时,会标记这些类要⽣成bean。
七.MyBatis中的@Mapper注解及配套注解使⽤详解,从mybatis3.4.0开始加⼊了@Mapper注解,⽬的就是为了不再写mapper映射⽂件
添加了@Mapper注解之后这个接⼝在编译时会⽣成相应的实现类
Application.properties⽂件和l的区别:yml⽂件的好处就是天然的树状结构,实质和pro
perties差不多;值得注意的是,原有的key,例如.jpa.properties..dialect,按“.”分割,都变成树状的配置。key后⾯的冒号,后⾯⼀定要跟⼀个空格,把原有
的application.properties删掉。然后⼀定要执⾏⼀下 maven -X clean install
#l
server:
port: 8086
spring:
datasource:
name: test
url: jdbc:mysql://192.168.1.112:3306/test
username: root
password: xxx
# 使⽤druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: sql.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'//空闲的时候进⾏检测需要发送验证语句
testWhileIdle: true
#开启空闲时监测,并设置检测时⽤的sql语句。指明连接是否被空闲连接回收器(如果有)进⾏检验
testOnBorrow: true
#指明是否从池中取出连接前进⾏检验,如果失败,则去除连接并尝试去除另⼀个;设置为true后如果要⽣#效,validationQuery参数必须设置为⾮空字符串
testOnReturn: false
#指明是否归还到池中前进⾏检验
poolPreparedStatements: true
#开启池的prepared statement 池功能
maxOpenPreparedStatements: 20
#statement池能够同时分配的打开的statements的最⼤数量, 如果设置为0表⽰不限制
#application.properties
server.port=8085
pe=at.jdbc.pool.DataSource
spring.datasource.url=jdbc:mysql://aliyuncs:3306/home?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true spring.datasource.username=root
spring.datasource.password=***
spring.datasource.sql.jdbc.Driver
#mybatis.mapper-locations=classpath*:com/wanyu/fams/mapping/*l
#pe-aliases-package=com.del
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.pe=com.alibaba.druid.pool.DruidDataSource
spring.druid.datasource.sql.jdbc.Driver
spring.druid.datasource.url=jdbc:mysql://localhost:3306/spring_boot?characterEncoding=utf-8
spring.druid.datasource.username=root
jpa mybatisspring.druid.datasource.password=xxx
1. springboot 默认资源根⽬录为static下 路径⼀定要写对不然出来⼀堆404还不知道为啥
2. 使⽤thymeleaf模板引擎的时候
步骤1.引⼊jar包 (当引⼊这个jar包的时候 默认的静态根⽬录变成了templates)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
步骤⼆:l只需要加(开发时禁⽤缓存)
spring:
thymeleaf:
cache: false
content-type:text/html
mode:LEGACYHTML5
application.properties添加如下配置:(这个不配置也可以的,如果不配置,会到resources/templates下去同名的模板或者页⾯)
# 定位模板的⽬录
spring.mvc.view.prefix=classpath:/templates/
# 给返回的页⾯添加后缀名
spring.mvc.view.suffix=.html
3.Springboot的热部署
# 实现页⾯热部署,页⾯修改后⽴即⽣效。配置了true后在修改java⽂件后也⽀持热启动,不过属于项⽬重启(会清空session中的值)
#devtools内嵌了⼀个liveReload server,当资源发⽣改变时,浏览器刷新
spring.thymeleaf.cache: false
abled: true
start.additional-paths: src/main/java (监控类的变化以此重启动)
#classpath⽬录下的WEB-INF⽂件夹内容修改不重启
lude: src/main/resources/**
spring boot 如何优雅的使⽤mybatis-spring-boot-starter
ORM框架的本质时简化编程中操作库的编码
⼀个是hibernate,发展到顶端的就是spring data jpa这种模式,基本上根据⽅法名就可以⽣成对应的sql
⼀个是可以灵活调试sql的mybatis;mybatis初期使⽤需要配置⽂件、实体类、dao层 映射关联,初期开发了 generator可以根据表结果⾃动⽣成实体类、配置⽂件和dao层代码;后期⼤量优化可以使⽤注解,⾃动管理dao层和配置⽂件。
Mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不⽤配置⽂件,也可以简单配置上⼿。
在l中添加maven⽂件
1. <dependency>
2. <groupId&batis.spring.boot</groupId>
3. <artifactId>mybatis-spring-boot-starter</artifactId>
4. <version>1.1.1</version>
5. </dependency>
application.properties添加配置(取决于引⼊的数据库的驱动),springboot会⾃动加载spring.datasource.*相关配置,数据源就会⾃动引⼊sqlSessionFactory中,sqlSessionFactory会⾃动引⼊到mapper中。
1. 或
2. 直接在每个Mapper类上⾯添加注解@Mapper
spring.datasource.driverClassName = sql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论