springboot+JPA
JDK17+Springboot3.4.6
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.6</version><relativePath/>
</parent><!--JPA起步依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
application-dev.yaml
server:port: 8896spring:datasource:username: rootpassword: rooturl: jdbc:mariadb://ip1.ip2.ip3.ip4:3306/springbootJPA?useUnicode=true&characterEncoding=UTF-8driver-class-name: org.mariadb.jdbc.Driver# 方言jpa:properties:hibernate:dialect: org.hibernate.dialect.MySQL8Dialect
bean Balance
import jakarta.persistence.*;
import lombok.Data;//实体类与表映射
@Entity(name = "balance_details")
@Data
public class Balance {//主键id@Id//设置主键自增//GenerationType.AUTO 策略在 MySQL 环境下错误地使用了 SEQUENCE(序列)生成方式,而 MySQL 不支持 原生的序列(Sequence)对象//@GeneratedValue(strategy = GenerationType.AUTO)//识别策略可以在mysql上用@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;//属性名与表字段名不一致@Column(name = "account_num")private String accountNum;private double amount;private String type;private String comment;
}
repository BalanceRepository
import com.ben.bean.Balance;
import org.springframework.data.jpa.repository.JpaRepository;/**Balance 操作的实体类, Integer 当前实体类被@id注解修饰也就是主键的数据类型*/
public interface BalanceRepository extends JpaRepository<Balance, Integer> {
}
接口 IBalance
public interface IBalance {Balance saveOne(Balance balance);
}
接口实现类 BalanceService
@Service
public class BalanceService implements IBalance {@Autowiredprivate BalanceRepository balanceRepository;@Override@Transactionalpublic Balance saveOne(Balance balance) {return balanceRepository.save(balance);}
}
BalanceController
@RestController
public class BalanceController {@Autowiredprivate BalanceService balanceService;@PostMapping("/save")public Balance save(@RequestBody Balance balance) {Balance balance1 = balanceService.saveOne(balance);return balance1;}
}
postman调用
post请求
localhost:8896/saverequest body:
{"accountNum":"abcd123","amount":12.34,"type":"prod","comment":"test"
}
数据库表
create table balance_details
(id int auto_incrementprimary key,account_num varchar(30) null,type varchar(10) null,comment varchar(100) null,amount double null
);