栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot快速整合JPA实现增删查改

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot快速整合JPA实现增删查改

接着是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-d

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

rop`:每次运行程序时会先创建表结构,然后待程序结束时清空表

  • 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;

@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;

@Component

public interface UserMapper extends JpaRepository {

}

在mapper层,因为我们使用的是jpa,继承了JpaRepository,里面基本的增删查改方法都是已经提供的,所以除了我们自己额外需要扩展的业务方法,基本不用写:

而且JpaRepository继承的分页PagingAndSortingRepository:

而PagingAndSortingRepository继承了CrudRepository:

所以非常多的方法都是可以直接使用,非常方便。

接下来是service层,UserService.java:

public interface UserService {

List findAll();

User getOne(Long id);

}

对应的impl:

@Service

public class UserServiceImpl implements UserService {

@Autowired

private UserMapper userMapper;

@Override

public List findAll() {

// 这里我们就可以直接使用 findAll 方法 这个findAll方法来自JpaRepository

return userMapper.findAll();

}

@Override

public User getOne(Long id) {

return userMapper.getOne(id);

}

}

然后是接口测试,UserController.java:

@RestController

public class UserController {

@Autowired

private UserService userService;

@GetMapping("/list")

public List findAll() {

return userService.findAll();

}

@GetMapping("/getOne/{id}")

public String getOne(@PathVariable(“id”) Long id) {

return userService.getOne(id).toString();

}

}

好,到这里,SpringBoot整合JPA已经完成,接下来测试下看看效果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号