如何快速搞定Jpa
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容主要讲解"如何快速搞定Jpa",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何快速搞定Jpa"吧!数据准备数据库使用的数据表设计如下建表语句如下S
千家信息网最后更新 2025年02月23日如何快速搞定Jpa
本篇内容主要讲解"如何快速搞定Jpa",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何快速搞定Jpa"吧!
数据准备
数据库使用的数据表设计如下
建表语句如下
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `last_login_time` datetime DEFAULT NULL, `sex` tinyint(4) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=armscii8; -- ---------------------------- -- Records of t_user -- ---------------------------- BEGIN; INSERT INTO `t_user` VALUES (1, 'json', '123', '2019-07-27 16:01:21', 1); INSERT INTO `t_user` VALUES (2, 'jack jo', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (3, 'manistal', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (4, 'landengdeng', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (5, 'max', '123', '2019-07-24 16:01:37', 1); COMMIT; SET FOREIGN_KEY_CHECKS = 1;
新建 Spring Boot 工程
选择 File -> New -> Project 选择 Spring Initializr,选择 next 填写包名,项目名,选择下一步。选择依赖,Spring web starter 前面打钩,sql 选项为 Spring Data Jpa,MySql 项目名任意
引入 Pom配置
org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-webflux mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test io.projectreactor reactor-test test
编写配置文件 application.yml
server: port: 8086 spring: #通用的数据源配置 datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/demo_test?useSSL=false&useUnicode=true&characterEncoding=utf8 username: root password: 123 jpa: #这个参数是在建表的时候,将默认的存储引擎切换为 InnoDB 用的 database-platform: org.hibernate.dialect.MySQL5InnoDBDialect #配置在日志中打印出执行的 SQL 语句信息。 show-sql: true hibernate: #配置指明在程序启动的时候要删除并且创建实体类对应的表 ddl-auto: create
编写示例代码
新建实体对象 UserDao.java
实体类,需要使用 @Entity 注解标注 需要对实体类的属性进行标注,使用 @Id 标注组件 使用 @Column 标注非主键
/** * 用户实体类 * */ @Entity @Table(name="t_user") public class UserDO { @Id private Integer id; @Column(name="user_name",length = 200) private String userName; @Column(name="password",length = 200) private String password; @Column(name="sex") private Integer sex; @Column(name="last_login_time") private Date lastLoginTime; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public Date getLastLoginTime() { return lastLoginTime; } public void setLastLoginTime(Date lastLoginTime) { this.lastLoginTime = lastLoginTime; } }
新建仓库接口类 UserRepository
仓库接口类,UserRepository 是我们常用的 Dao 接口,需要注意
使用 @Repository 注解
继承 JPARepository
UserRepository 不需要编写任何代码,即可实现增删查改
@Repository public interface UserRepository extends JPARepository{ }
编写测试用例
在
src/test/java/com/fishpro/jpa/
下,新增加
UserRepositoryTest.java
使用
@RunWith(SpringRunner.class)
和
@SpringBootTest
注解标注类。
@RunWith(SpringRunner.class) @SpringBootTest public class UserRepositoryTest{ }
新增加用户数据
/** * 初始化一个对象 UserDO 测试Insert过程 * */ @Before public void before(){ UserDO userDO=new UserDO(); userDO.setId(1); userDO.setUserName("fishpro"); userDO.setSex(1); userDO.setLastLoginTime(new Date()); userDO.setPassword("passWord"); userRepository.save(userDO); }
查询单个用户数据
@Test public void testFind(){ OptionaloptionalUserDO=userRepository.findById(1); if(optionalUserDO.isPresent()){ UserDO userDO=optionalUserDO.get(); System.out.println("testFind user"+userDO.getUserName()); } }
查询多个数据
@Test public void testFindAll(){ Listlist=userRepository.findAll(); for (UserDO user:list ) { System.out.println("user_name:"+user.getUserName()); } }
更新数据
@Test public void testUpdate(){ OptionaloptionalUserDO=userRepository.findById(1); if(optionalUserDO.isPresent()){ UserDO userDO=optionalUserDO.get(); userDO.setUserName("fishpro001"); userRepository.save(userDO); System.out.println("testFind user"+userDO.getUserName()); } }
删除数据
@After public void after(){ userRepository.deleteById(1); userRepository.deleteById(2); userRepository.deleteById(3); }
联合主键
例如定义表中userId,roleId 都是主键,此时这样设置
1.定义一个主键类
public class UserRoleKey implements Serializable { private Integer userId; private Integer roleId; }
2.定义实体类
@Entity @Table(name="t_user_role") @IdClass(UserRoleKey.class) //注意这里是引入了 定义的符合主键类 public class UserRoleDO { @Id private Integer userId; @Id private Integer roleId; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public Integer getRoleId() { return roleId; } public void setRoleId(Integer roleId) { this.roleId = roleId; } }
到此,相信大家对"如何快速搞定Jpa"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
数据
实体
选择
配置
接口
注解
用户
查询
仓库
代码
内容
对象
时候
语句
项目
学习
测试
实用
更深
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全的预防措施不包括
怎么搞家庭服务器省钱
单位网络安全重要工作职责
表格怎么用数据库计算
守护儿童网络安全
买互联网科技股会大跌吗
网络安全法在完善
x86服务器国产芯片
时间值 数据库
万方数据库pdf图标
在家做软件开发的工作吗
软件开发服务需要征增值税吗
c7s服务器
mc服务器在哪里看
化妆品软件开发任务表
数据库的概念结构设计
天津常规软件开发品质保障
内部网络安全模式打开u盘
数据库中主键约束
杭州互联网软件开发定制费用
个人日常网络安全的防护措施
网络技术什么
我的世界服务器输入密码
网络安全自查表
我想软件开发
腾讯云服务器出现了内部错误
服务器端编程语言有哪些
服务器文件互传linux
无线网络技术书籍
access的数据库