Spring Boot + JPA学习总结

项目创建

使用IDEA的Spring Initializr工具创建Spring Boot项目,创建时Dependencies中只选择Web栏下web这一项。创建成功后先删除项目目录下不需要的.mvn、mvnw、mvnw.cmd这些文件。

项目启动

1、IDE中启动

2、命令行终端中启动

到项目目录下:

1)mvn spring-boot:run

2)先编译:mvn install

进入target目录:cd target

查看目录下文件:div

再运行jar包:java -jar filename.jar

这种方式可选择配置文件,在其后加参数,如下例:

java -jar filename.jar --spring .profiles.active=prod

打包时会进行单元测试,若需要跳过单元测试,则命令如下:

mvn clean package -Dmaven.test.skip=true

配置文件

若在配置文件中定义了变量,例:

name1: value1
name2: value2
name3: "name1: ${name1},name2: ${name2}"
复制代码

在controller中使用的方式为:

@Value("${name}")
private String name;
复制代码

prefix:
  property1: value1
  property2: value2
复制代码

再创建一个对象属性类,加上注解:

@Component
@ConfigurationProperties(prefix = "prefix")
复制代码

在controller中通过对象来调用

配置mysql

在配置文件中配置mysql,例:(配置文件默认使用properties文件,但推荐使用yml文件)

spring:
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/db?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
    jpa:
      hibernate:
        ddl-auto: update
      show-sql: true
复制代码
JPA

JPA(Java Persistence API)定义了一系列对象***持久化***的标准,目前实现这一规范的产品有Hibernate、TopLink等。

Spring-Data-Jpa是Spring对Hibernate的一个整合。

添加spring-boot-starter-data-jpa依赖包以及要使用的mysql依赖包mysql-connector-java。

Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库

创建对象类,该对象类需要添加一些注释,

@Entity——指名这是一个实体Bean

@Table——指定了Entity所要映射的数据库表,其中@Table.name()用来指定映射表的表名。如果缺省@Table注释,系统默认采用类名作为映射表的表名。

@Id——指定主键,id一般还要指定自增,需要@GeneratedValue注释。

注:SpringBoot的@GeneratedValue 是不需要加参数的,但是如果数据库控制主键自增(auto_increment), 不加参数就会报错.

@GeneratedValue(strategy=GenerationType.IDENINY)

PS:@GeneratedValue注解的strategy属性提供四种值: -AUTO主键由程序控制, 是默认选项 ,不设置就是这个 -IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式 -SEQUENCE 通过数据库的序列产生主键,MYSQL不支持 -Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植

这样数据库中就会创建对应表,表中的字段与对象属性字段一一映射

JpaRepository 是继承自 PagingAndSortingRepository 的针对 JPA 技术提供的接口,它在父接口的基础上,提供了其他一些方法,比如 flush(),saveAndFlush(),deleteInBatch() 等。如果有这样的需求,则可以继承该接口。

只需要创建继承JpaRepository接口的对象仓储接口,就可以通过这个对象仓储接口直接使用JpaRepository接口提供的方法。使我们几乎不需要写一条sql语句,大大简化了操作。可在接口内添加查询方法(方法名要规范,如下):findByProperty (type Property);

事务管理——@Transactional

表单校验——@Valid

面向切面编程AOP

首先在pom文件中引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
复制代码

使用例:创建aspect包,在其下创建处理http请求的类,使用@Aspect和@Component注解,例:

 @Pointcut("execution(public * com.imooc.controller.GirlController.*(..))")
 public void log() {
 }

 @Before("log()")
 public void doBefore(){
     //dosomethig
 }

 @After("log()")
 public void doAfter() {
     //dosomethig
 }
复制代码

使用logger打印信息 在类中添加

private final static Logger logger = LoggerFactory.getLogger(ClassName.class);
复制代码

输出语句为:logger.info(),例:

项目结构

aspect-切面层,统一请求处理 controller-控制层,调研service实现业务 domain-领域模型层,放置映射数据库表的简单java对象和通用的返回结果对象 enums-放置错误信息枚举类 exception-放置自定义exception类 handle-异常捕获层,使用了@ControllerAdvice注解和@ExceptionHandler注解用于全局异常的处理 properties-配置层,对应配置文件中配置的属性对象 repository-仓储层,放置继承JpaRepository接口的repository类 service-业务层,处理业务逻辑 utils-工具层,例如实现统一返回结果类型

参考:

慕课课程《Spring Boot进阶之Web进阶》+《2小时学习Spring Boot》

转载于:https://juejin.im/post/5c637dade51d4563567cc471

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值