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-jpadatasource:url: jdbc:mysql://localhost:3306/data_jpa?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=trueusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverjpa:hibernate:ddl-auto: updateshow-sql: true
ddl-auto几种配置说明
1)create
每次加载hibernate时都删除上一次的生成的表,然后根据bean类重新来生成新表,容易导致数据丢失,(建议首次创建时使用)。
2)create-drop
每次加载hibernate时根据bean类生成表,但是sessionFactory一关闭,表就自动删除。
3)update
第一次加载hibernate时根据bean类会自动建立起表的结构,以后加载hibernate时根据bean类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。
4)validate
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
3、实体类对象
【SpringBoot集成JPA持久层框架|SpringBoot集成JPA持久层框架,简化数据库操作】就是根据这个对象生成的表结构。
@Table(name = "t_user")@Entitypublic class User {@Id@GeneratedValueprivate Integer id; @Columnprivate String name; @Columnprivate 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; @Repositorypublic interface 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; @Servicepublic class UserService {@Resourceprivate 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 {@Resourceprivate UserService userService ; @Testpublic 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); }@Testpublic void findByAge (){Integer age = 22 ; // User{id=3, name='知了一笑', age=22}System.out.println(userService.findByAge(age)); }@Testpublic void findByNameAndAge (){System.out.println(userService.findByNameAndAge("cicada",23)); }@Testpublic void findSql (){// User{id=4, name='cicada', age=23}System.out.println(userService.findSql("cicada")); }@Testpublic void update (){User user = new User() ; // 如果这个主键不存在,会以主键自增的方式新增入库user.setId(3); user.setName("哈哈一笑"); user.setAge(25); userService.update(user) ; }@Testpublic void deleteStudentById (){userService.deleteStudentById(5) ; }}
源代码地址 GitHub地址:知了一笑
https://github.com/cicadasmile/spring-boot-base
码云地址:知了一笑
https://gitee.com/cicadasmile/spring-boot-base
以上就是SpringBoot集成JPA持久层框架,简化数据库操作的详细内容,更多关于SpringBoot集成JPA持久层框架的资料请关注脚本之家其它相关文章!
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- Spring集成|Spring集成 Mina
- springboot使用redis缓存
- springboot整合数据库连接池-->druid
- SpringBoot中YAML语法及几个注意点说明
- springboot结合redis实现搜索栏热搜功能及文字过滤
- springboot中.yml文件的值无法读取的问题及解决