SpringBoot

一、简介

1.简化Spring环境搭建和开发
具体为:
在这里插入图片描述
2.项目结构:
在这里插入图片描述

二、 SpringBoot 项目属性配置

在application.properties中进行配置:
在这里插入图片描述
说明:
1.server.context-path为启动项目时,端口后的名称
2.自定义属性的使用:
在这里插入图片描述
3.多属性的自定义可以用封装类的方法(记得写get,set方法):
在这里插入图片描述
注:prefix是表示每个属性前加一个字符串(不加就不用写)

使用:
在这里插入图片描述
在这里插入图片描述

三、 SpringBoot 之 MVC 支持

1.@RequestMapping 配置 url 映射和@Controller 处理 http 请求

例子:
在这里插入图片描述
注意:helloWorld 可以直接在templates中建freemaker模板(不用配置路径)

2.@RestController 处理 ajax 请求

下面两种写法等同(可直接输出到页面上):
1.
在这里插入图片描述
2.
在这里插入图片描述
注意:如果前天要接收json格式数据可用:(或者用其他json框架)
在这里插入图片描述

3.@PathVariable 获取 url 参数

例子:
在这里插入图片描述
访问:
在这里插入图片描述

4.@RequestParam 获取请求参数(post 或 get 都可以)

例子:
在这里插入图片描述
注意:加一个required ,当参数为空也可以。

四、SpringBoot SpringDataJpa 支持

注意:需要加入jpa 和 mysql 的支持

1、基本的crud例子:(通过创建实体类,运行自动生成数据库表)

1.先配置
在这里插入图片描述
2.写实体类
在这里插入图片描述
3.对表进行增删改查(Book 为操作的表的实体,Integer为主键类型)

先继承 jpa 接口
在这里插入图片描述
再使用其相关内置方法:

  1. 查找所有书籍
    在这里插入图片描述
  2. 添加图书(method 可以指定只接受post方式提交,也可直接用P@PostMapping)
    在这里插入图片描述
    上面等同于
    @PostMapping("/add")

2、自定义查询@Query(原生sql 和 hql)

例子:

在这里插入图片描述
在这里插入图片描述
注意:nativeQuery=true :意思是,默认为hql ,加上这个代表使用的是原生sql

3、动态查询 Specification 使用(动态sql 可以拼接sql )

  1. 还要实现下面的接口:在这里插入图片描述

  2. 使用:

    	/**
    	 * 根据条件动态查询
    	 * @param book
    	 * @return
    	 */
    	@RequestMapping("/list2")
    	public ModelAndView list2(Book book){
    		ModelAndView mav=new ModelAndView();
    		List<Book> bookList=bookDao.findAll(new Specification<Book>() {
    			// root  为 book 对象, query  为高级查询(这里不用 ),cb为条件构造器
    			@Override
    			public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
    				Predicate predicate=cb.conjunction();
    				if(book!=null){
    					if(book.getName()!=null && !"".equals(book.getName())){
    						predicate.getExpressions().add(cb.like(root.get("name"), "%"+book.getName()+"%"));
    					}
    					if(book.getAuthor()!=null && !"".equals(book.getAuthor())){
    						predicate.getExpressions().add(cb.like(root.get("author"), "%"+book.getAuthor()+"%"));
    					}
    				}
    				return predicate;
    			}
    		});
    		mav.addObject("bookList", bookList);
    		mav.setViewName("bookList");
    		return mav;
    	}
    	
    

五、SpringBoot 之事务管理

直接在需要使用的方法上添加 @Transactional:

在这里插入图片描述

六、 SpringBoot 之表单验证

  1. 先在实体类上 添加 注解
    在这里插入图片描述
  2. 使用:

如果错误,bindingResult 就会有错误信息,再通过if 判断即可
在这里插入图片描述

七、SpringBoot 之切面 AOP

实例:


@Aspect
@Component
public class RequestAspect {

	private Logger logger=Logger.getLogger(RequestAspect.class);
	//先定义一个切点,下面定义方法在切点的前、后、返回值等
	@Pointcut("execution(public * com.java1234.controller.*.*(..))")
	public void log(){
	}
	
	@Before("log()")
	public void doBefore(JoinPoint joinPoint){
		logger.info("方法执行前...");
		//通过joinPoint 可以获取一些值(ip 、方法名、参数、等等)
		ServletRequestAttributes sra=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
		HttpServletRequest request=sra.getRequest();
		logger.info("url:"+request.getRequestURI());
		logger.info("ip:"+request.getRemoteHost());
		logger.info("method:"+request.getMethod());
		logger.info("class_method:"+joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());
		logger.info("args:"+joinPoint.getArgs());
		Student student=(Student) joinPoint.getArgs()[0];
		System.out.println(student);
	}
	
	@After("log()")
	public void doAfter(JoinPoint joinPoint){
		logger.info("方法执行后...");
	}
	
	@AfterReturning(returning="result",pointcut="log()")
	public void doAfterReturning(Object result){
		logger.info("方法返回值:"+result);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值