SpringBoot集成JPA持久层框架,简化数据库操作

网友投稿 650 2023-01-08

SpringBoot集成JPA持久层框架,简化数据库操作

SpringBoot集成JPA持久层框架,简化数据库操作

目录与SpringBoot2.0整合 1、核心依赖2、配置文件3、实体类对象4、JPA框架的用法5、封装一个服务层逻辑测试代码块 源代码地址

与SpringBoot2.0整合

1、核心依赖

    org.springframework.boot

    spring-boot-starter-data-jpa

2、配置文件

spring:

  application:

    name: node09-boot-jpa

  datasource:

    url: jdbc:mysql://localhost:3306/data_jpa?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true

    username: root

    password: root

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

  jpa:

    hibernate:

      ddl-auto: update

    show-sql: true

ddl-auto几种配置说明

1)create

每次加载hibernate时都删除上一次的生成的表,然后根据bean类重新来生成新表,容易导致数据丢失,(建议首次创建时使用)。

2)create-drop

每次加载hibernate时根据bean类生成表,但是sessionFactory一关闭,表就自动删除。

3)update

第一次加载hibernate时根据bean类会自动建立起表的结构,以后加载hibernate时根据bean类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。

4)validate

每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

3、实体类对象

就是根据这个对象生成的表结构。

@Table(name = "t_user")

@Entity

public class User {

    @Id

    @GeneUQTtbgXfratedValue

    private Integer id;

    @Column

    private String name;

    @Column

    private Integer age;

    // 省略 GET SET

}

4、JPA框架的用法

定义对象的操作的接口,继承JpaRepository核心接口。

import com.boot.jpa.entity.User;

import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.data.jpa.repository.Query;

import org.springframework.data.repository.query.Param;

import org.springframework.stereotype.Repository;

@Repository

public interface&http://nbsp;UserRepository extends JpaRepository {

    // 但条件查询

    User findByAge(Integer age);

    // 多条件查询

    User findByNameAndAge(String name, Integer age);

    // 自定义查询

    @Query("from User u where u.name=:name")

    User findSql(@Param("name") String name);

}

5、封装一个服务层逻辑

import com.boot.jpa.entity.User;

import com.boot.jpa.repository.UserRepository;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service

public class UserService {

    @Resource

    private UserRepository userRepository ;

    // 保存

    public void addUser (User user){

        userRepository.save(user) ;

    }

    // 根据年龄查询

    public User findByAge (Integer age){

        return userRepository.findByAge(age) ;

    }

    // 多条件查询

    public User findByNameAndAge (String name, Integer age){

        return userRepository.findByNameAndAge(name,age) ;

    }

    // 自定义SQL查询

    public User findSql (String name){

        return userRepository.findSql(name) ;

    }

    // 根据ID修改

    public void update (User user){

        userRepository.save(user) ;

    }

    //根据id删除一条数据

    public void deleteStudentById(Integer id){

        userRepository.deleteById(id);

    }

}

测试代码块

import com.boot.jpa.JpaApplication;

import com.boot.jpa.entity.User;

import com.boot.jpa.service.UserService;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes = JpaApplication.class)

public class UserJpaTest {

    @Resource

    private UserService userService ;

    @Test

    public void addUser (){

        User user = new User() ;

        user.setName("知了一笑");

        user.setAge(22);

        userService.addUser(user);

        User user1 = new User() ;

        user1.setName("cicada");

        user1.setAge(23);

        userService.addUser(user1);

    }

    @Test

    public void findByAge (){

        Integer age = 22 ;

&nbhttp://sp;       // User{id=3, name='知了一笑', age=22}

        System.out.println(userService.findByAge(age));

    }

    @Test

    public void findByNameAndAge (){

        System.out.println(userService.findByNameAndAge("cicada",23));

    }

    @Test

    public void findSql (){

        // User{id=4, name='cicada', age=23}

        System.out.println(userService.findSql("cicada"));

    }

    @Test

    public void update (){

        User user = new User() ;

        // 如果这个主键不存在,会以主键自增的方式新增入库

        user.setId(3);

        user.setName("哈哈一笑");

        user.setAge(25);

        userService.update(user) ;

    }

    @Test

    public void deleteStudentById (){

        userService.deleteStudentById(5) ;

    }

}

源代码地址

github地址:知了一笑

https://github.com/cicadasmile/spring-boot-base

码云地址:知了一笑

https://gitee.com/cicadasmile/spring-boot-base

以上就是SpringBoot集成JPA持久层框架,简化数据库操作的详细内容,更多关于SpringBoot集成JPA持久层框架的资料请关注我们其它相关文章!

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

上一篇:金融小程序页面(百度金融小程序)
下一篇:小程序生态是什么样的(微信原生态小程序)
相关文章

 发表评论

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