暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Spring Data JPA 访问 Mysql 数据库-配置项

Java实验室 2021-09-13
520

jpa操作数据库

注意:数据库采用的是本机数据库,下面是建表语句及初始化数据:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` bigint(0NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `dpt_id` bigint(0NULL DEFAULT NULL COMMENT '部门id',
  `name` varchar(30CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `age` int(0NULL DEFAULT NULL COMMENT '年龄',
  `email` varchar(50CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  `head_img` varchar(200CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像',
  PRIMARY KEY (`id`USING BTREE
ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户类' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (11'Jone'18'test1@baomidou.com''e');
INSERT INTO `user` VALUES (21'Jack'20'test2@baomidou.com''d');
INSERT INTO `user` VALUES (31'Tom'28'test3@baomidou.com''c');
INSERT INTO `user` VALUES (41'Sandy'21'test4@baomidou.com''b');
INSERT INTO `user` VALUES (51'Billie'24'test5@baomidou.com''a');

SET FOREIGN_KEY_CHECKS = 1;
复制
在idea中配置数据源:idea-->view-->tool windows-->database
创建工程,添加如下依赖
<!--springboot web依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--springboot 操作数据库使用jpa的依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql数据库连接驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok 一款神器,后面专题介绍-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
复制
在创建的工程下的application.yml添加如下数据库配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo?charset=UTF-8&serverTimezone=GMT%2B8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
复制
按照如下建立工程目录结构
user
代码:
@Entity//标识这个是一个与数据库表对应的entity类
@Data//lombok神器的一个注解,后面专题介绍
@Table ( name ="user" )//这个类是与数据库的哪个表对应的
public class User implements Serializable {

   private static final long serialVersionUID =  829933141479418804L;

   /**
    * 主键ID
    */

   @Id//这个字段是数据库表的主键
       @Column(name = "id" )//这个属性对应表的哪个字段
   @GeneratedValue(strategy= GenerationType.IDENTITY)//主键采用数据库自增方式
   private Long id;

   /**
    * 部门id
    */

       @Column(name = "dpt_id" )
   private Long dptId;

   /**
    * 姓名
    */

       @Column(name = "name" )
   private String name;

   /**
    * 年龄
    */

       @Column(name = "age" )
   private Long age;

   /**
    * 邮箱
    */

       @Column(name = "email" )
   private String email;

   /**
    * 头像
    */

       @Column(name = "head_img" )
   private String headImg;

}
复制
@GeneratedValue
注解的strategy属性提供四种值:
  1. –AUTO:主键由程序控制,是默认选项,不设置即此项。
  2. –IDENTITY:主键由数据库自动生成,即采用数据库ID自增长的方式,Oracle不支持这种方式。
  3. –SEQUENCE:通过数据库的序列产生主键,通过@SequenceGenerator 注解指定序列名,mysql不支持这种方式。
  4. –TABLE:通过特定的数据库表产生主键,使用该策略可以使应用更易于数据库移植。
userJpa
代码:
@Repository//表示这个是一个操作数据库的Repository类

public interface UserJpa extends JpaRepository<User,Long{
}
复制
userController
代码:
@RestController
@RequestMapping("user")

public class UserController {

    @Resource
    private UserJpa userJpa;

    @GetMapping("findAll")//查找所有数据
    public List<User> findAll(){
        return this.userJpa.findAll();
    }

    @GetMapping("get")//按主键查找数据
    public User get(@RequestParam("id")Long id){
        return this.userJpa.findById(id).get();
    }
}
复制
启动工程,然后用postman测试:查询所有:
查询指定id的数据
全程没写一条sql,数据就这么查询出来了。好了,本节就到这里了。下一节介绍保存,删除,更新,自定义sql
文章已经同步更新到 Java实验室官方站点:

https://javawu.com/archives/2737

重磅!Java纯交流群(无广告)已成立

在群里和大家分享一些Java开发相关的知识,包括部分自己的实战项目,基础入门知识,spring,jvm,mysql等等。也会免费分享一些Java视频教程、电子资料、Mysql资料、Kubernetes及最新Java面试资料

同时为了帮助到其他技术栈 小伙伴,我也准备了一些Python,前端,Linux,C语言等其他技术资料!

有兴趣入群的同学,可长按扫描下方二维码添

一定要备注:Java,可更快被通过且邀请进群


文章转载自Java实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论