一. 故事背景
最近有已经工作的学员跟文哥聊天,说他刚进公司,人生地不熟,每天工作都是战战兢兢,如履薄冰。本来他觉得自己用的最6的技术就是文哥教给他的Mybatis了,本以为靠着Mybatis就可以养家糊口,赚点血汗钱了。结果发现大家用的都是Spring Data JPA!!!他顿时虎躯一震,菊花一紧,赶紧跑来问文哥,要不要跑路,另找下家???
这还得了,难道就因为小小的一个JPA不会用就想跑路?顿时气的文哥差点喷出一口老血!待冷静过后,思考再三,文哥认为既然外面还是有企业在用Spring Data JPA的,所以在这里文哥就普及一下Spring Data JPA的基本使用。
二. JPA简介
那啥是Spring Data JPA呢?
我们来翻看一下Spring的官网,Spring Data JPA是Spring Data家族的一部分,作者的初衷是想开发者通过Spring Data JPA的使用来极大的简化对数据持久层的开发。好了,废话不多说,我们直接开始盘它!!!
三. 创建Maven项目
我们直接创建一个基于Springboot的Maven工程。
1. 引入相关依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
看到没有,文哥在pom.xml文件里面引入了lombok依赖,建议小伙伴把这个插件下载下来,用起来真的美滋滋~~~
2. 编写启动器
@SpringBootApplication
public class SpringDataJpaApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDataJpaApplication.class,args);
}
}
3. 编写application.yml配置文件
server:
port: 8071
spring:
application:
name: service-user
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.10.139:3306/jpa
username: root
password: Admin123!
type: com.alibaba.druid.pool.DruidDataSource
jpa: #springdataJpa配置
properties:
hibernate:
hbm2ddl:
auto: update #jpa自动创建数据表,如果表已经存在,则不再创建
dialect: org.hibernate.dialect.MySQL5InnoDBDialect #指定数据表引擎 InnoDB
4. 编写pojo实体类
@Entity(name = "user")//实体类和数据表的对应关系
@Data //不用写get set方法了
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) //主键自增长
private Integer uid;//主键
private String username;//用户名
private String password;//密码
private String telephone;//手机号
}
注意:这里有很多注解,文哥在这里给大家解释一下:
@Data: 给实体类加get/set/toString/Equals AndHashCode方法,是lombok的注解。
@Entity:指定当前类是实体类。
@Id: 指定当前字段是主键。
@GeneratedValue:指定当前主键的生成方式。
文哥解释之后,这几个注解理解起来是不是就非常简单了呢?
pojo实体编写完成以后,你就可以启动你的项目了,此时你会发现非常有意思的事情,当你打开数据库,你会发现:
你发现,Spring Data JPA会根据实体类帮助我们自动的生成数据表!!!是不是很方便。
5. 编写dao接口
这里便是整个spring-data-jpa中最令人虎躯一震的地方!令人震惊!!!一个接口居然可以实现常用的所有操作!(是不是和mybatisplus有点类似???)
public interface UserDao extends JpaRepository<User, Integer> {
}
你以为我们的杰作才开始吗?不,已然结束了。
至此我们就可以看到,这个接口继承了JpaRepository<实体,ID>,spring-data-jpa只需要这个信息,就可以帮你完成常用的操作:增删查改。
今天文哥就不再具体讲解JpaRepository中所包含的所有方法了,这里只把最简单的增删查改来给大家介绍一下,如果你想了解更多,可以来线下班里找文哥。
6. 编写service
public interface UserService {
public void addUser(User user);
public void updateUser(User user);
public void deleteUserById(Integer id);
public User findUserById(Integer id);
public List<User> findAll();
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserDao userDao;
@Override
public void addUser(User user) {
userDao.save(user);
}
@Override
public void updateUser(User user) {
userDao.save(user);
}
@Override
public void deleteUserById(Integer id) {
userDao.deleteById(id);
}
@Override
public User findUserById(Integer id) {
return userDao.findById(id).get();
}
@Override
public List<User> findAll() {
return userDao.findAll();
}
}
进行到这里,我们的代码就基本编写完毕了,最后看看项目的整体目录结构:
8.编写测试类进行测试文章来源:https://www.toymoban.com/news/detail-444313.html
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringDataJpaApplication.class)
public class TestSpringDataJpa {
@Autowired
UserService userService;
/**
* 新增的方法
*/
@Test
public void test01(){
User user = new User();
user.setUsername("kobe");
user.setPassword("kobe24");
user.setTelephone("13333333333");
userService.addUser(user);
}
/**
* 根据id查询的方法
*/
@Test
public void test02(){
User user = userService.findUserById(1);
System.out.println(user);
}
/**
* 修改的方法
*/
@Test
public void test03(){
User user = new User();
user.setUid(4);
user.setPassword("admin");
user.setUsername("Mourinho");
user.setTelephone("16666567890");
userService.updateUser(user);
}
/**
* 查询所有数据的方法
*/
@Test
public void test04(){
List<User> userList = userService.findAll();
userList.forEach(user->{
System.out.println(user);
});
}
@Test
public void test05(){
userService.deleteUserById(3);
}
}
最后经过文哥亲测,没有问题,大家可以亲自测试一下。好了,今天的Spring Data JPA,文哥就给大家介绍到这里,是不是非常简单?你以后不会因为这个不会再跑路了吧?所以小伙伴们以后工作中遇到不会的问题,千万不要想着跑路,只要你肯钻研,办法总是有的。文章来源地址https://www.toymoban.com/news/detail-444313.html
到了这里,关于Spring data JPA的基本使用把你难到了吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!