Springboot简单启动
依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springboottest</groupId>
<artifactId>springboottest</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 所有的springboot应用都要以该工程为父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
<!-- 启动器: 每一个启动器背后都是一堆的依赖-->
<!-- 这个是web启动器-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
</project>
上面用的是通用Mapper来完成mysql的查询,需要注意的是通用Mapper只能用于单表查询,如果涉及到多表就不能用通用Mapper,而要使用Mybatis
需要注意的是,如果使用Mybatis除了依赖文件改变了之外,还要二外在配置文件里配置扫描的包
配置文件
server:
port: 8088
servlet:
path: /
spring:
datasource:
password: username
username: password
url: jdbc:mysql://127.0.0.1:3306/springboottest
logging:
level:
faker: debug
org.springframework: debug
springboot启动类
@SpringBootApplication
@MapperScan("faker.Mapper")
public class BootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(BootDemoApplication.class,args);
}
}
注意这里的MapperScan在不同的情况下使用的是不同的,如果使用的是通用Mapper,那么导入的包是tk.mybatis.spring.annotation.MapperScan;
如果使用的是Mybatis那么导入的包是mybatis里的
给mvc加拦截器
@Configuration
public class Mvcconfig implements WebMvcConfigurer {
@Autowired
private Myinterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注意: /*是拦截一级,/**是拦截多级(也就是全部都拦截)
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}
@Component
public class Myinterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("前置方法正在执行...");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("后置方法正在执行...");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("完成方法正在执行...");
}
}
运行结果注解方式使用日志
controller和service等
controller
@RestController //相当于 @ResponseBody + @Controller
@RequestMapping("hello")
@EnableAutoConfiguration //启用自动配置
public class HelloController {
@Autowired
private UserService userservice;
@GetMapping("show")
public String test() {
return "hello springboot 1";
}
@GetMapping("{id}")
public User queryById(@PathVariable("id") Long id) {
return userservice.queryforId(id);
}
}
service
@Service
public class UserService {
@Autowired
private UserInterface userInterface;
public User queryforId(Long id){
return userInterface.selectByPrimaryKey(id);
}
}
Mapper
public interface UserInterface extends tk.mybatis.mapper.common.Mapper<User> {
}
实体类
@Data
@Table(name="user")
public class User {
@Id
@KeySql(useGeneratedKeys = true)
private Long id;
private String username;
private String password;
private Integer age;
private String name;
private Integer sex;
private Date birthday;
}
Data的注解的作用是给属性加上get和set方法等