• SpringBoot利用jpa连接MySQL数据库


    添加依赖

    在pom文件中添加如下依赖

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-data-jpaartifactId>
    4. dependency>
    5. <dependency>
    6. <groupId>mysqlgroupId>
    7. <artifactId>mysql-connector-javaartifactId>
    8. dependency>

    配置数据库连接 

    在application.yml中添加数据库连接配置

    1. # 应用服务 WEB 访问端口
    2. server:
    3. port: 8080
    4. # 应用名称
    5. spring:
    6. application:
    7. name: HelloSpringBoot
    8. #数据库配置连接
    9. datasource:
    10. url: jdbc:mysql://127.0.0.1:3306/hello_jpa?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    11. username: root
    12. password: "123456"
    13. driver-class-name: com.mysql.cj.jdbc.Driver
    14. jpa:
    15. show-sql: true

    配置上数据库的连接地址和账号密码

    url: jdbc:mysql://127.0.0.1:3306/hello_jpa??useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai

    数据库连接地址

    127.0.0.1表示本地

    3306数据库端口号

    hello_jpa数据库名称

    useUnicode=true&characterEncoding=utf-8配置数据库连接使用UTF8编码

    serverTimezone=Asia/Shanghai配置时间为北京时间

    username 配置数据库名称 root

    password 配置数据库密码 123456

    driver-class-name 配置mysql的驱动 com.mysql.cj.jdbc.Driver

    show-sql配置控制台是否打印访问数据库时的sql语句,配置为true,显示sql语句,方便调试。

    启动项目,看到如下信息,表示数据库连接成功,如果显示错误,请查验是否数据库连接信息有错误。

    创建测试数据库表

    1. CREATE TABLE `jpa_user` (
    2. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
    3. `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名称',
    4. `age` tinyint(4) NULL DEFAULT NULL COMMENT '年龄',
    5. `gender` tinyint(4) NULL DEFAULT NULL COMMENT '性别0女 1男',
    6. `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号',
    7. PRIMARY KEY (`id`) USING BTREE
    8. ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

    Java代码部分

    建实体类和Repository

    jpa_user表对应实体类User

    1. //引入lombok的getset注解,也可以不引入,自己写下面字段的对应getset方法
    2. @Getter
    3. @Setter
    4. //注解此类为实体类
    5. @Entity
    6. //关联数据库表的名称
    7. @Table(name = "jpa_user")
    8. public class User {
    9. //声明属性为主键
    10. @Id
    11. //指定主键生成策略
    12. @GeneratedValue(strategy = GenerationType.IDENTITY)
    13. // @Column注解,设置属性关联的数据库表字段
    14. // 注意:如果属性名和表字段名相同,可以不设置,比如这个实体类对应的所有字段就都是与数据库表字段相同的,都可以不设置Column注解
    15. @Column(name = "id")
    16. private Long id;
    17. @Column(name = "username")
    18. private String username;
    19. @Column(name = "age")
    20. private Integer age;
    21. @Column(name = "gender")
    22. private Integer gender;
    23. @Column(name = "phone")
    24. private String phone;
    25. //驼峰命名法和数据库中的下划线字段是对应的
    26. @Column(name = "access_card_number")
    27. private String accessCardNumber;
    28. }
    创建UserRepository,数据库操作类
    1. public interface UserRepository extends JpaRepository {
    2. }

    是的,这个接口没有定义方法,只要继承JpaRepository就可以,分别对应的要连接的实体类和主键类型。

    JpaRepository内置好了基本的增删查改接口及排序和分页功能。

    做个简单的代码测试

    往数据库中插入数据

    1. //insert into jpa_user (access_card_number, age, gender, phone, username) values (?, ?, ?, ?, ?)
    2. User user = new User();
    3. user.setUsername("test");
    4. user.setPhone("13112345678");
    5. user.setAge(18);
    6. user.setGender(0);
    7. user.setAccessCardNumber("ic_001");
    8. userRepository.save(user);

    根据主键id查找数据

    1. //select * from jpa_user user where user.id=?
    2. User user = userRepository.findById(id).orElse(null);

    修改id为1的数据

    1. //update jpa_user set access_card_number=?, age=?, gender=?, phone=?, username=? where id=?
    2. User user = userRepository.findById(1L).orElse(null);
    3. user.setPhone("13212345678");
    4. userRepository.save(user);

    删除id为1的数据

    1. //delete from jpa_user where id=?
    2. userRepository.deleteById(1L);

    where语句与查找数据

    在UserRepository中定义一个方法

    1. //select * from jpa_user user where (user.age between ? and ?) and user.gender=?
    2. List findByAgeBetweenAndGender(int minAge, int maxAge, int gender);

    在repository中我们可以自定义查找条件的方法

    findBy前缀为查找实体数据,countBy前缀表示查找实体数量,deleteBy前缀为删除数据

    这三种后面跟随的都是查找条件,多条件用and或or连接

    比如上面的例子就是搜索(age between minAge and maxAge) and gender = gender

    搜索条件支持定向查找,模糊查找,比较查找等等。

    测试代码地址:HelloSpringBoot: SpringBoot测试项目

  • 相关阅读:
    在linux系统中使用WoeUSB工具制作U盘启动盘
    (18)Verilog实现信号延迟N拍【4拍】
    郑州中创|第二期星际文件系统训练营
    排序算法总结-C++实现
    MIT6.828学习笔记1
    http/https服务器实现
    面对外部攻击威胁,怎样确保API安全
    如何使用蓝牙实现OTA固件升级
    阿里云部署SpringBoot项目启动后被杀进程的问题
    【苹果】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
  • 原文地址:https://blog.csdn.net/dengdaijc/article/details/127392874