IDEA 中创建Spring Data Jpa 项目的示例代码

网友投稿 542 2022-12-08


IDEA 中创建Spring Data Jpa 项目的示例代码

一、IDEA 创建工程

使用IDEA 创建工程的过程,使用文字做简单描述。

选择工程类别【Spring Initializr】。

设置工程的元数据【Metadata】,根据自己的情况填写即可。

设置工程的依赖;在【Web】中选择“Spring Web”;在【SQL】中选中“Spring Data JPA”、“Spring Data JDBC”、“mysql Driver”、“JDBC API”。选中的可能有些多,如果多了自己删除掉。

做完最后一步,工程就创建完成了。

PS:在配置 IEAD 中的 Maven 功能时,将“Always update snapshots” 选中,这样就会及时更新测试包,并且不缓存Maven 的错误信息。

1.1、Pom 文件中的依赖信息

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-jdbc

org.springframework.boot

spring-boot-starter-web

mysql

mysql-connector-java

runtime

</dependency>

org.springframework.boot

spring-boot-starter-test

test

二、编辑配置文件

在 resources 目录中创建配置文件:application.yml;添加数据源等信息。

spring:

datasource:

url: jdbc:mysql://dbserver.com:3306/user?useUnicode=true&characterEncoding=utf-8

username: username

password: password

driver-class-name: com.mysql.cj.jdbc.Driver

server:

port: 8080

compression:

enabled: true

servlet:

context-path: /

三、编写实体类

创建User的实体类 Entity/User.java(省略了getter&setter方法;如果不写的话,会对数据操作失败)。

/**

* 使用JPA注解配置映射关系

*/

@Entity //告诉JPA这是一个实体类(和数据表映射的类)

@Table(name = "tbl_user") //@Table来指定和哪个数据表对应;如果省略,默认表名就是该类名的小写:user

public class User {

@Id //表示这个属性是数据表中的主键

@GeneratedValue(strategy = GenerationType.IDENTITY) //还是一个自增的主键

private Integer id;

@Column(name = "last_name",length = 50) //这是和数据表对应的一个列,可以定义其在数据表中的名字及长度

private String lastName;

@Column //省略的情况,默认列名就是属性名

private String email;

}

使用JPA的一个好处就是,它能够根据实体类自动创建数据库表,只需简单配置几步即可:

在application.yml文件中增加(jpa 也是spring下的一个属性,所以它也是在spring这个层级下的):

jpa:

hibernate:

ddl-auto: update #定义数据表的生成策略。update:更新或者创建数据表结构

show-sql: true #控制台显示sql语句

运行主程序,控制台会报错找不到对应的表,但是这实际上是正常的,去数据库看就可以发现名为tbl_user的表已经创建成功了,而且是根据实体类中的设置创建的。

四、持久层接口

JPA中有许多封装好的对数据库进行操作的方法,不需要我们再写sql语句,而是直接调用其中的方法,就可以完成对数据的操作了。而这时,持久层只需继承JpaRepository类就可以了。

/**

* Dao/UserRepository.java

* 继承JpaRepository来完成对数据库的操作

* JpaRepository,T表示要进行操作的实体类,id表示类的主键的类型

*/

public interface UserRepository extends JpaRepository {

}

五、控制层

编写控制层代码来测试一下是否成功。因为没有界面,所以这边直接用@RestController注解来返回json串就好了,把持久层接口自动注入进来,直接调用其中对应的方法。

@RestController

@EnableAutoConfiguration

public class UserController {

@Autowired

UserRepository userRepository;

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

public User getUser(@PathVariable("id") Integer id) {

Optional optional = userRepository.findById(id);

if (optional.isPresent()) {

User user = optional.get();

return user;

} else {

return new User();

}

}

@GetMapping("/user")

public User insertUser(User user) {

User save = userRepository.save(user);

return save;

}

}

六、测试

1.首先插入一条数据:

地址栏输入 :http://localhost:8080/user?lastName=zhangsan&email=aa

2、查询:

地址栏输入 :http://localhost:8080/user/1


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现简单的抽牌游戏
下一篇:详解Java Callable接口实现多线程的方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~