jpa-真的不用自己创建数据库吗?懒人福音

整合JPA

Spring Data

简介:

Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问技术,包括非关系数据库、

Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。

1、SpringData特点

SpringData为我们提供使用统一的API来对数据访问层进行操作;这主要是Spring Data

Commons项目来实现的。Spring Data Commons让我们在使用关系型或者非关系型数据访问

技术时都基于Spring提供的统一标准,标准包含了CRUD(创建、获取、更新、删除)、查询、

排序和分页的相关操作。

2、统一的Repository接口

Repository<T, ID extends Serializable>:统一接口

RevisionRepository<T, ID extends Serializable, N extends Number & Comparable<N>>:基于乐观

锁机制

CrudRepository<T, ID extends Serializable>:基本CRUD操作

PagingAndSortingRepository<T, ID extends Serializable>:基本CRUD及分页

3、提供数据访问模板类 xxxTemplate;

如:MongoTemplate、RedisTemplate等

4、JPA与Spring Data

1)、JpaRepository基本功能

编写接口继承JpaRepository既有crud及分页等基本功能

2)、定义符合规范的方法命名

在接口中只需要声明符合规范的方法,即拥有对应的功能

3)、@Query自定义查询,定制查询SQL

4)、Specifications查询(Spring Data JPA支持JPA2.0的Criteria查询)

 

 

 


mybatis,druid,jdbc的关系

druid和c3p0是一个级别的,都是数据源

mybatis是警察. druid是武器库(有很多枪). jdbc是武器商(他们造枪给武器库). 当你需要一次"除暴安良"时,你需要去找警察,警察从武器库拿枪干活. 以往的开发,是你使用jdbc直接造枪,然后自己干活.

 

 

jpa介绍

以前我们的应用程序直接使用ORM框架,如hibernate,mybatis。但是不同的框架使用方法不一样,而JPA让我们以同样的方式访问不同的ORM框架。常用的框架是hibernate。

JPA是一个规范,不是框架

hibernate是JPA的实现

创建新的项目:

创建项目时候选中SQL中的JPA,MySql,JDBC

打包方式war包

选中web

1)主配置文件导入jpa

spring:
  datasource:
    url: jdbc:mysql:///bookstore?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: 111
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
    hibernate:
#     更新或者创建数据表结构
      ddl-auto: update
#    控制台显示SQL
    show-sql: true
​

 

2)、整合SpringData JPA

JPA:ORM(Object Relational Mapping);

1)、编写一个实体类(bean)和数据表进行映射,并且配置好映射关系;

//使用JPA注解配置映射关系
@Entity //告诉JPA这是一个实体类(和数据表映射的类)
@Table(name = "tbl_user") //@Table来指定和哪个数据表对应;如果省略默认表名就是user;
public class User {
​
    @Id //这是一个主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
    private Integer id;
​
    @Column(name = "last_name",length = 50) //这是和数据表对应的一个列  //列名-字符长度
    private String lastName;
    @Column //省略默认列名就是属性名
    private String email;

2)、编写一个Dao接口来操作实体类对应的数据表(Repository)

//继承JpaRepository来完成对数据库的操作
public interface UserRepository extends JpaRepository<User,Integer> {//要操作的实体类-操作实体类主键类型
}
​

3)、基本的配置JpaProperties

在主配置文件中配置

spring:
  datasource:
    url: jdbc:mysql:///jpa?useUnicode=true&characterEncoding=utf-8
    username: root
    password: 111
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
    hibernate:
#     更新或者创建数据表结构
      ddl-auto: update
#    控制台显示SQL
    show-sql: true

使用JPA

直接在controller方法中这样使用就行

@RestController
public class UserController {
​
    @Autowired
    UserRepository userRepository;
​
    @GetMapping("/user/{id}")
    public User getUser(@PathVariable("id") Integer id){
        User user = userRepository.findOne(id);
        return user;
    }
​
    @GetMapping("/user")
    public User insertUser(User user){
        User save = userRepository.save(user);
        return save;
    }
​
}
​

 

查询:

http://localhost:8080/user/1

添加:

http://localhost:8080/user?lastName=zhangsan&email=aa

个人:

不用自己创建数据库,操作简单,不用自己写那么多sql语句,之后将学习一下jpa,毕竟一行代码就搞定了之前好多行代码就可以搞定的事情

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值