</dependency>
接下来我们创建一个UserController类,我们使用@RestController注解表明这个Controller提供Restful的服务。使用@RequestMapping及其变体,映射http请求url到java的方法。@RequestParam映射请求参数到java方法的参数。以上是常用的注解,下面我们还会使用@PageableDefault指定分页参数默认值。
接下来我们介绍@PathVariable映射url片段到java方法的参数。并且介绍在url的声明中使用正则表达式,如下所示我们指定url中的参数只能是数字。
使用@JsonView去控制json输出内容,@JsonView的使用步骤是:1. 使用接口来声明多个视图 2. 在值对象的get方法上指定视图 3.在Controller方法上指定视图。
例如我们在实体类User上添加两个试图接口UserSimpleView和UserDetailView,其中UserDetailView继承了UserSimpleView,并且我们在get方法上指定视图,最后在Controller方法上指定视图。
接下来我们来讲一下处理创建请求,@RequestBody映射请求体到java方法的参数。因为传参是json格式,使用@RequestBody参数传递给接收的对象。在User对象中日期类型参数的处理,尽量传时间戳,前端根据不同的需求展示不同的时间格式,Date类型的日期属性,返回时间戳。
@Valid注解和BindingResult验证请求参数的合法性并处理校验结果。具体使用方式如下,在实体类中添加注解,例如@NotBlank表示参数不能为空。然后再Controller层方法接收参数的地方使用@Valid注解参数才能被校验。那么如何接收校验结果呢,我们使用BindingResult去实现,在方法中把所有的校验错误打印出来。
修改和删除服务的时候我们可以使用PUT和DELETE请求,也可以都使用POST请,使用组合注解@PutMapping和@DeleteMapping。
(4) springboot常用注解以及作用
在平常开发工作中,我们经常需要用到注解,springboot中注解很多,合理正确的使用注解,可以提高我们的开发效率。今天,主要写下springboot中常用的注解。
1:@SpringBootApplication:
@SpringBootApplication是springboot中最核心的注解,写在启动类的上面。它是@Configuration、@EnableAutoConfiguration和@ComponentScan的组合注解。@Configuration指示一个类声明一个或者多个@Bean 声明的方法并且由Spring容器管理,@EnableAutoConfiguration将SpringBoot中所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器,@ComponentScan扫描定义路径下的bean。
2:@RestController:
主要作用于Controller的类上,它是@Controller和@ResponseBody的组合注解,主要用于返回json数据。
3:@ResponseBody
主要作用于控制层的类上,主要用于返回json数据。
4:@Data
主要作用于实体类上,编译后可以自动加上get、set、toString、equals方法等,减少我们实体类代码的书写,增加可阅读性。
5:@Service
主要作用于业务层上面,就是通常说的service的类上。
6:@RequestMapping
主要作用于Controller类及方法上,主要作用是请求地址的映射,当然,其中还有method属性等,method属性主要是请求类型,比如post、get等,value = RequestMethod.GET。
7:@Mapper
主要作用于DAO接口上,可以自动生成接口的实现类。
8:@MapperScan
主要作用于启动类上,用于生成DAO接口的实现类,如果DAO接口比较多,推荐使用@MapperScan注解,写法如@MapperScan("com.example.demo.dao").
9:@Controller
主要作用于控制层类上,用于处理http请求等。
10:@PathVariable
主要是用于取url中的变量的值,比如 @RequestMapping("/student/{studentName}"),那么在对应的方法入参中可以写成:(@PathVariable ?String ?studentName).
11:@RequestParam
将请求参数绑定到Controller的方法上面,@RequestParam(value=”参数名”)。
(5) 如何使用mybaits-plus(用法可以到官网查询 https://baomidou.com/ )
引入 Spring Boot Starter 父工程:
<parent>
? ? <groupId>org.springframework.boot</groupId>
? ? <artifactId>spring-boot-starter-parent</artifactId>
? ? <version>undefined</version>
? ? <relativePath/>
</parent>
引入 spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter、h2 依赖:
在 application.yml 配置文件中添加 H2 数据库的相关配置:
# DataSource Config
spring:
? datasource:
? ? driver-class-name: org.h2.Driver
? ? schema: classpath:db/schema-h2.sql
? ? data: classpath:db/data-h2.sql
? ? url: jdbc:h2:mem:test
? ? username: root
? ? password: test
在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:
@SpringBootApplication
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
public class Application {
? ? public static void main(String[] args) {
? ? ? ? SpringApplication.run(QuickStartApplication.class, args);
? ? }
}
编写实体类 User.java(此处使用了 Lombok (opens new window)简化代码)
@Data
public class User {
? ? private Long id;
? ? private String name;
? ? private Integer age;
? ? private String email;
}
编写Mapper类 UserMapper.java
public interface UserMapper extends BaseMapper<User> {
}
添加测试类,进行功能测试:
@SpringBootTest
public class SampleTest {
? ? @Autowired
? ? private UserMapper userMapper;
? ? @Test
? ? public void testSelect() {
? ? ? ? System.out.println(("—– selectAll method test ——"));
? ? ? ? List<User> userList = userMapper.selectList(null);
? ? ? ? Assert.assertEquals(5, userList.size());
? ? ? ? userList.forEach(System.out::println);
? ? }
}
(6) mybaits常用注解以及作用
1、sql – 可被其他语句引用的可重用语句块
<sql id="valid"> where valid = 1 </sql>
?
<select id = ‘queryUser’>select * from user <include refid = ‘valid’></include>
2、insert – 映射插入语句
<insert id = "saveUser">insert into User (id,name,sex) values (#{id},#{name},#{sex})<insert>
3、update – 映射更新语句
<update id="updateUser">
? update User set
? ? name = #{name},
? ? sex= #{sex}
? where id = #{id}
</update>
4、delete – 映射删除语句
<delete id="deleteUser">
? delete from User where id = #{id}
</delete>
(7) 编写一个简单的登陆注册功能
@Api(tags = {"管理员接口"})
@RequestMapping("/admin")
@Controller
@ResponseBody
public class AdminController {
? ? @Autowired
? ? private AdminMapper adminMapper;
? ? @ApiOperation("管理员登录")
? ? @RequestMapping("/login")
? ? public ResponseMessage login(@RequestBody LoginVo loginVo){
? ? ? ? QueryWrapper<Admin> queryWrapper=new QueryWrapper<>();
? ? ? ? queryWrapper.eq("account",loginVo.getAccount());
? ? ? ? queryWrapper.eq("pwd",loginVo.getPwd());
? ? ? ? Admin admin=adminMapper.selectOne(queryWrapper);
? ? ? ? if (admin==null){
? ? ? ? ? ? return ResponseMessage.error("请登录");
? ? ? ? }else {
? ? ? ? ? ? admin.setToken(UUID.randomUUID().toString());
? ? ? ? ? ? adminMapper.updateById(admin);
? ? ? ? ? ? return ResponseMessage.success(admin);
? ? ? ? }
? ? }
? ? @ApiOperation("管理员注册")
? ? @RequestMapping("/register")
? ? public ResponseMessage register(@RequestBody Admin admin){
? ? ? ? adminMapper.insert(admin);
? ? ? ? return ResponseMessage.success(1);
? ? }
}
2. mysql数据库
(1) 数据库的安装
参考博客:https://www.cnblogs.com/Eva-J/articles/9664401.html
(2) 数据库常用字段
字符型?
VARCHAR VS CHAR?
文本型?
TEXT?
数值型?
SQL支持许多种不同的数值型数据。你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。?
INT VS SMALLINT VS TINYINT?
逻辑型?
BIT
日期型?
DATETIME VS SMALLDATETIME?
Unsigned
无符号的整数
声明了该列不能声明为负值,否则变为0
zerofill
0填充的
总结
面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。
此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!
给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”
且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/148613.html