spring data jpa的基本使用

     先来介绍一下jpa,spring data jpa是对Hibernate的一种封装,方便我们去使用Hibernate,spring全家桶中类似的有spring-data-redis,spring-data-mongodb,mybaits-spring.从这些产品可以看出,spring基本上对市场上的每一种数据库有进行了封装。 在使用持久化操作的时候,我们一般会使用工厂方法来新建对象操作数据库,mybatis的是sqlsession,Hibernate是session,在jpa中是EntityManager. 不过使用jpa的时候有一个非常大的好处是它可以根据我们的方法名动态的生成sql语句,减少了开发的代码量,而且在更换数据库的时候非常方便,移植性较好。

  在jpa中没有dao这个概念,取而代之的是repositroy(仓库)。

  在使用jpa之前,我们一般需要对jpa进行一些配置。下面列举了一些常用的配置:

  spring.jpa.show-sql= true                        : 在控制台显示sql语句

  spring.jpa.hibernate.ddl-auto=update     :自动更新表结构

spring.jpa.hibernate.use-new-id-generator-mappings=false  :取消jpa自动生成hibernate_sequence,否则会报错,显示数据库中                       没有hibernate_sequence这张表

   spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect  //设置数据方言
   spring.jpa.properties.hibernate.dialect=包名.MySQL5DialectUTF8  // 自定义数据库方言,方便切换数据库

               自定义数据库方言如下:

                  public class MySQL5DialectUTF8 extends MySQL5InnoDBDialect {

                      @Override
                        public String getTableTypeString() {
                        return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
                   }
                 }

  注意:所有的例子基于spring boot2,并且需要在maven中引入相关的依赖

  现在来新建一张User表

@Data
@Entity
@Table(name="user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @JSONField(ordinal = 1)
    private int id;
    @JSONField(ordinal = 2)
    private String username;
    @JSONField(ordinal = 3)
    private String password;

}

注意:JSONField是在使用fastjson时自定义顺序
使用jpa新建实体类时,必须指定主键id,生成主键的策略

接下就可以写Repository,一般直接继承JpaRepository

@Repository
public interface UserRepository  extends JpaRepository<User,Integer> {
    String findByUsername(String username);

}

继承jpaRepository之后,就可以动态的生成sql语句了,其中泛型JpaRepository<R,T>,R为实体类,T为主键的类型

基本的curd方法为:

save(User user);添加一个user

findAll():查询所有的user 返回值为list

findById(int id):根据id查询user

deleteById(int id):根据id删除user,返回值为void

findByUsername(String username):根据username查询user //这个方法是定义在userRepository中

这些基本上就是curd方法,可以看到完全不需要写sql语句,全部由jpa自动生成。

不过jpa自动生成sql有一定的规范,下面是官网的截图。

 

如果想在控制台打印sql,可在配置文件中添加:spring.jpa.show-sql=true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值