简单看看JPA依赖包的主要成分,可以看到里面有个熟悉的框架 hibernate:
不多说,直接开始整合。
这次快速整合示例的目录结构:
先创建一个springboot项目,在pom.xml中加入依赖:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-data-jpa
org.projectlombok
lombok
1.16.10
provided
接着是application.yml文件:
#服务端口
server:
port: 8055
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/testdemo?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
hikari: # springboot 2.0 整合了hikari ,据说这是目前性能最好的java数据库连接池
username: root
password: root
minimum-idle: 5 # 最小空闲连接数量
idle-timeout: 180000 # 空闲连接存活最大时间,默认600000(10分钟)
maximum-pool-size: 10 # 连接池最大连接数,默认是10
auto-commit: true # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
pool-name: MyHikariCP # 连接池名称
max-lifetime: 1800000 # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
connection-timeout: 30000 # 数据库连接超时时间,默认30秒,即30000
connection-test-query: SELECT 1 #连接池每分配一条连接前执行的查询语句(如:SELECT 1),以验证该连接是否是有效的。如果你的驱动程序支持 JDBC4,HikariCP 强烈建议我们不要设置此属性
jpa:
hibernate:
ddl-auto: create # 第一次建表create 后面用update,要不然每次重启都会新建表
show-sql: true #打印执行的sql语句
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect #设置数据库方言 记住必须要使用 MySQL5InnoDBDialect 指定数据库类型对应InnoDB ;如果使用MySQLDialect 则对应的是MyISAM
上面的配置项,需要注意的是,
①数据库连接池,这次例子里面采用的是springboot2.0版本后默认整合的hikari连接池,想多了解的可以去网上额外了解下这个数据库连接池的优劣。
②ddl-auto,
-
create
:每次运行程序时,都会重新创建表,故而数据会丢失 -
create-drop
:每次运行程序时会先创建表结构,然后待程序结束时清空表 -
upadte
:每次运行程序,没有表时会创建表,如果对象发生改变会更新表结构,原有数据不会清空,只会更新(推荐使用) -
validate
:运行程序会校验数据与数据库的字段类型是否相同,字段不同会报错 -
none
: 禁用DDL处理
③database-platform,这项是配置对应连接数据库的方言,也就是语法、规则等等。 这里我们使用mysql数据库,方言项记得使用MySQL5InnoDBDialect,这样才能对应起InnoDB。
好,接下来创建User.java(需要注意的是主键自增的设置项,IDENTITY):
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
-
@Author : JCccc
-
@CreateTime : 2019/10/12
-
@Description :
**/
@Data
@Entity // 该注解声明一个实体类,与数据库中的表对应
@ToString
public class User {
@Id // 表明id
@GeneratedValue(strategy = GenerationType.IDENTITY) // 自动生成
private Long id ;
private String name ;
}
-
@Entity:标注在实体类上告诉JPA这是一个实体类
-
@Table:可以给表命名,也可以使用默认的,即实体类名就是表名
-
@Id:主键注解
-
@GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键
-
@Column: 标注在字段上,可以指定字段名和长度 .
然后是mapper层,UserMapper.java:
import com.jc.gracedemo.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Component;
/**
-
@Author : JCccc
-
@CreateTime : 2019/10/12
-
@Description :
**/
@Component
public interface UserMapper extends JpaRepository<User,Long> {
/*
-
我们在这里直接继承 JpaRepository
-
这里面已经有很多现场的方法了,可以直接通过UserMapper.xxx()直接使用
-
这也是JPA的一大优点
-
*/
}
在mapper层,因为我们使用的是jpa,继承了JpaRepository,里面基本的增删查改方法都是已经提供的,所以除了我们自己额外需要扩展的业务方法,基本不用写:
而且JpaRepository继承的分页PagingAndSortingRepository:
而PagingAndSortingRepository继承了CrudRepository:
所以非常多的方法都是可以直接使用,非常方便。
接下来是service层,UserService.java:
/**
-
@Author : JCccc
-
@CreateTime : 2019/10/12
-
@Description :
**/
public interface UserService {
List findAll();
User getOne(Long id);
}
对应的impl:
/**
-
@Author : JCccc
-
@CreateTime : 2019/10/12
-
@Description :
**/
@Service
public class UserServiceImpl implements UserService {
@Autowired
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/3a3bf6bb46fd645942d11443c68f032d.jpeg)
读者福利
由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴
更多笔记分享
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
32d36.jpg" alt=“img” style=“zoom: 33%;” />
读者福利
由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴
[外链图片转存中…(img-PjDyQeXZ-1713319328641)]
[外链图片转存中…(img-Xly4iZup-1713319328641)]
[外链图片转存中…(img-BExSqtPA-1713319328642)]
更多笔记分享
[外链图片转存中…(img-YICFGKpH-1713319328642)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!