博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot入门 (五) 数据库访问之spring data jpa
阅读量:5077 次
发布时间:2019-06-12

本文共 4171 字,大约阅读时间需要 13 分钟。

本文记录学习使用spring data jpa访问数据库

一 什么是Spring Data JPA

  JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象、关联映射工具来管理Java应用中的关系数据。主要是为了简化现有的持久化开发工作和整合ORM技术,对不同的ORM框架提供统一的规范标准。

  Spring Data JPA 是Spring基于Hibernate框架和JPA(Java Persistence API)规范的基础上封装的一套JPA应用框架,它提供了增、删、改、查等一些常用得方法供开发者调用,可以轻松实现实现对数据的访问和操作。

二 简单示例

  要使用spring data jpa,我们首先需要在pom.xml中引入所需要的依赖jar包

org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java

  在application.properties文件配置数据源连接信息

#驱动spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/test#用户spring.datasource.username=root#密码spring.datasource.password=123456#ddl create:不论数据库表有没有都是创建,update:当表存在时更新,不存在是创建spring.jpa.properties.hibernate.hbm2ddl.auto=update#方言spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect#输出SQLspring.jpa.show-sql=true#对SQL格式化spring.jpa.properties.hibernate.format_sql=true

   创建一个实体对象,完成与数据库表之间的映射

@Entity@Table(name="t_user")public class UserInfo {    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private Long id;    @Column(name = "name", nullable = true, length = 30)    private String name;    @Column(name="age", nullable = true, length = 3)    private Integer age;    public UserInfo() {    }    public UserInfo(String name, Integer age) {        this.name = name;        this.age = age;    }    @Override    public String toString() {        return "UserInfo{" +                "id=" + id +                ", name='" + name + '\'' +                ", age=" + age +                '}';    }    //省略getter和setter}
@Entity 说明当前类为一个实体类,默认属性name可以不输入,默认就是当前类名
@Table(name="t_user") 说明当前类映射的数据库表是t_user
@Id 说明该字段是表的主键
@GeneratedValue(strategy = GenerationType.AUTO) 说明主键的生成策略是 GenerationType.*,*有AUTO、INDENTITY、SEQUENCE 和 TABLE可供选择
@Column(name = "name", nullable = true, length = 30) 说明当前字段在数据库表中对应的列属性,name:表中的列名,nullable:允许为空,length:长度不超过30

  前边已经说过了,Spring Data JPA 已经给我们提供了具体的接口供调用,所以只需要继承他的方法来使用就可以了,创建接口并继承JpaRepository

public interface UserRepository extends JpaRepository
{}

  在IDEA中打开类图(如上图),可以看到我们继承的JpaRepository 通过继承关系已经有了增删该查(CrudRepository)和分页排序(PagingAndSortingRepository),所以我们的UserRspository也就有了对应的方法

三 测试 

  使用Junit做个简单的测试

@RunWith(SpringRunner.class)@SpringBootTestpublic class JpaApplicationTests {    @Resource    private UserRepository userRepository;    /**     * 保存用户信息     */    @Test    public void save() {        UserInfo user = new UserInfo("卢俊义", 3);        userRepository.save(user);    }    /**     * 根据ID删除     */    @Test    public void delete() {        long id = 3;        userRepository.deleteById(id);    }    /**     * 修改     */    @Test    public void update() {        UserInfo user = new UserInfo();        user.setId(Long.valueOf(3));        user.setName("老卢");        user.setAge(5);        userRepository.saveAndFlush(user);    }    /**     * 根据ID查询     */    @Test    public void selectById() {        long id = 3;        UserInfo user = userRepository.findById(id).get();        System.out.println(user);    }    /**     * 查询所有     */    @Test    public void selectAll() {        List
userList = userRepository.findAll(); System.out.println(userList); } /** * 根据Id倒序查询 */ @Test public void selectAllOrder() { Sort sort = new Sort(Sort.Direction.DESC, "id"); List
userList = userRepository.findAll(sort); System.out.println(userList); } @Test public void pageSelect() { int currentPage = 1; int pageSize = 2; //分页查询 Pageable page = PageRequest.of(currentPage, pageSize); Page
pageObject = userRepository.findAll(page); //分页 ID倒序 Sort sort = new Sort(Sort.Direction.DESC, "id"); Pageable pageOrder = PageRequest.of(currentPage, pageSize, sort); Page
pageObject2 = userRepository.findAll(pageOrder); }}

  

转载于:https://www.cnblogs.com/love-wzy/p/10330832.html

你可能感兴趣的文章
[2013 eoe移动开发者大会]靳岩:从码农到极客的升级之路
查看>>
Chrome设置允许ajax跨域
查看>>
【opencv学习笔记一】opencv下载安装与VS2017开发环境配置
查看>>
svnserve配置文件详析
查看>>
Linux下查看软件的安装路径
查看>>
js总结:三级联动
查看>>
让一个元素相对于父元素固定定位
查看>>
ACM警示
查看>>
自动化构建工具 grunt & gulp
查看>>
PHP和Javascript里诡异的0和空
查看>>
50深入理解C指针之---指针与别名
查看>>
spark总结
查看>>
v3 Creating Custom Field Types收藏
查看>>
Opengles2.0入门
查看>>
linux下对qt编写的程序进行部署
查看>>
Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门
查看>>
图像的上采样 下采样
查看>>
iPhone手机相关知识
查看>>
bzoj 2049: [Sdoi2008]Cave 洞穴勘测
查看>>
tp3.2 页面Windows正常 linux异常,页面找不到
查看>>