SpringBoot

添加依赖

ClassNotFound直接类名addMavenDependency

<parent>
	<groupId>org.springframework.boot</groupId> 
	<artifactId>spring-boot-starter-parent</artifactId> 
	<version></version> 
</parent>

<!--启动类要有这个依赖才能启动-->
<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

	<!--打成jar包时能直接启动项目-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

启动类

@SpringBootApplication
//@SpringBootConfiguration //配置类
//@EnableAutoConfiguration //自动配置
//@ComponentScan //包扫描,路径为启动类包名
public class Application {
	public static void main(String[] args){ 
		SpringApplication.run(Application.class, args); //创建spring容器
	} 
	//把实例存入容器
	@Bean
	public Object object(){ return new Object(); }
}

InitializingBean

@Component
public class ComponentName implements InitializingBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        //启动完成属性注入后会执行
    }

jar包目录

System.getProperty(“user.dir”);

静态资源目录

ResourceProperties.java

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/","classpath:/resources/", "classpath:/static/", "classpath:/public/" };

SpringMvc配置

@Configuration
public class CustomMvcConfiguration implements WebMvcConfigurer {
	//添加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/**");
    }
}

CustomHandlerInterceptor

public class CustomHandlerInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //前置方法
        return true;//true继续执行,false不进入@Controller
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //后置方法
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //最终方法
    }
}

整合Mybatis

pom.xml

 <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
	<groupId>com.microsoft.sqlserver</groupId>
	<artifactId>mssql-jdbc</artifactId>
	<version>9.2.0.jre8</version>
</dependency>

<dependency> 
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version></version>
</dependency>

<!-- 通用Mapper --> 
<dependency> 
	<groupId>tk.mybatis</groupId> 
	<artifactId>mapper-spring-boot-starter</artifactId> 
	<version></version>
</dependency>

application.yml

#数据源对象
spring:
	datasource: 
		driver-class-name: driverClassName #输数据库名有提示
		url: jdbc:mysql://url 
		username: username
		password: password
	
mybatis: 
	# 别名
	type-aliases-package: 包
	# 映射文件路径
	mapper-locations: 
		- classpath:/*.xml 
	# 下划转驼峰
	configuration: 
		map-underscore-to-camel-case: true

#日期解析
jackson:
  date-format: yyyy-MM-dd HH:mm:ss
  timeZone: GMT+8

#自动处理关键字
mapper:
  wrap-keyword: "`{0}`" #mssql用"[{0}]"

启动类

//用通用Mapper要这个包的MapperScan
import tk.mybatis.spring.annotation.MapperScan;

@MapperScan(basePackages = {"mapper包路径"})
public class Application {...}

Pojo
mssql只能用包装类

@Table(name = "`table`") //绑定数据库中的表,mssql [],dbo不用加
public class Pojo{
	@Id //主键 
	@KeySql(useGeneratedKeys = true) // 自增主键返回
	@Column(name = "别名")
	@JsonIgnore //不需要返回的属性或方法
	@JsonProperty("json返回key别名") //controller要接收json @RequestBody才能反序列化
	@Transient //插入时忽略的字段
	private Long id;

	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")//日期格式转换
	@DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date date;
}

Mapper

//包含通用方法
public interface Mapper extends Mapper<Pojo> {}

//通用Mapper查询方法
//Example查询
Example example = new Example(Pojo.class); 
Example.Criteria criteria = example.createCriteria();
criteria.条件方法();
Mapper.selectByExample(example);

//实体类查询
Mapper.select(new Pojo());

//集合查询,Mapper要继承IdListMapper<Pojo,集合内数据类型>
Mapper.selectByIdList(List<集合内数据类型>)

//集合插入,Mapper要继承InsertListMapper<集合内数据类型>
Mapper.insertList(集合内数据类型);

Service

@Service
@Transactional //类中所有方法添加事务
public class Service {
    @Autowired
    private Mapper mapper;

	@Transactional //方法添加事务
    public Object function(){
       return null;
    }
}

Controller

@RestController //=@Controller+@ResponseBoduy
public class Controller {
    @Autowired
    private Service service;

	//返回实体类自动转换JSON(需要实体类有getter)
    @GetMapping("/")
    public Object function(){
        return service.function();
    }
	
	//需要返回状态码用ResponseEntity<>
	@GetMapping("/")
    private ResponseEntity<DO> exceptionHandler(DO do){
        return ResponseEntity.status(int status/HttpStatus status).body(do);
    }
}

整合Junit

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
</dependency>
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class})
public class Test {
	@Test
	public void testFuntion(){}
}

整合Redis

<dependency>
	<groupId>org.springframework.boot</groupId> 
	<artifactId>spring-boot-starter-data-redis</artifactId> 
</dependency>
spring: 
	redis: 
		host: host 
		port: 6379
@Autowired 
private RedisTemplate redisTemplate;

SpringBootServletInitializer

打包成war包时要继承SpringBootServletInitializer指定启动类

public class CustomServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        builder.sources(Application.class);
        return builder;
    }
}

@ControllerAdvice

自定义异常

@ControllerAdvice //全局生效
public class AdviceController {
    @ExceptionHandler(ConsumerException.class) //拦截的Exception
    private ResponseEntity<ConsumerException> exceptionHandler(ConsumerException e){
        return ResponseEntity.status(e.getStatus()).body(e);
    }
}
@Getter
public class ConsumerException extends RuntimeException {
    public int status;

    public ConsumerException(int status,String message) {
        super(message);
        this.status=status;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值