一.JPA

特点:JPA可以根据方法名自动匹配sql语句.

JPA是一个标准

Hibernate是JPA的一个实现,宗旨是尽量少写sql语句.

使用JPA

1.application.properties配置:

在springBoot工程下的application.properties配置文件中的相关配置:

#配置数据库链接
spring.datasource.url=jdbc:mysql://数据库信息?useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=test
spring.datasource.password=****** #配置数据库初始化的模式,会自动读取resources文件下面的data.sql文件(自定义)进行执行
#还会读取schema.sql文件
#schema.sql一般会写建表语句
#data.sql里面会写数据库插入的语句
spring.datasource.initialization-mode=always #关于JPA的配置
#执行sql语句的时候,是否在控制台打印
spring.jpa.show-sql=true
#none 关闭根据实体类创建表的功能
#create 如果表不存在,则根据实体类的配置创建表
#update 如果实体类的配置更改了,与表对应不上,那么会更新表的结构
#create-drop 工程启动的时候先删除表在创建表。
spring.jpa.hibernate.ddl-auto=none

2.创建实体类

JPA会根据配置的实体类自动创建相应的表.

package com.example.demo.entity;
import lombok.Data;
import javax.persistence.*; @Data
@Entity
//上面这两个注解是lombok里面的
//使用JPA需要配置实体类与表的对应关系
@Table(name = "dep") //配置实体类对应的表的名字是什么
public class Dep { //主键列需要配置ID注解
@Id
//配置注解自增长的方式
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long uuid;
//name : 自定义表名
//unique : 是否唯一
//nullable : 是否为空.
@Column(name = "dep_name" ,unique = true,nullable = false)
private String name;
//默认情况下。实体类的驼峰式的属性会自动映射到列的下划线形式
private String depTele; //建立表的之间的关联.
//OneToOne :一对一
//OneToMany :一对多
//ManyToMany : 多对对
@ManyToMany(fetch = FetchType.EAGER)
//创建外键
@JoinTable(name = "role_menu",joinColumns = @JoinColumn(name = "role_id"),
inverseJoinColumns = @JoinColumn(name = "menu_id"))
private Set<MenuEntity> menus; }

  

3.创建接口

创建一个接口,继承于JpaRepository<class,Long>

该接口有很多对数据库操作的方法,不需要实现,用的时候只需要利用多态调用父接口的方法就能对数据库进行操作.

比如:findById()方法,根据id查询所有.

1.这里面也可以自定义一些方法,不过方法名要符合规则.

2.可以利用@Query注解为自定义的方法配置自己的sql语句.

3.可以定义一个方法,由实现类来重写方法,在实现类里面重写更复杂的sql

package com.example.demo.repository;

import com.example.demo.entity.Dep;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import java.util.List; public interface DepRepository extends JpaRepository<Dep,Long> { //JPA可以根据方法名自动生成SQL语句
List<Dep> findAllByNameContaining(String name);
    //为方法配置自定义的sql
@Query(value = "select * from dep where name like concat('%', :name,'%')",nativeQuery = true)
List<Dep> findByname(@Param("name") String name);

//定义一个方法,有实现类来重写该方法,重写sql语句,
List<Dep> findAllTest();
}

接口的实现类.

不需要在类上写implements实现上面的接口,JPA会根据类名的命名规则自动匹配实现类.

注入一个EntityManager对象,该对象会根据sql语句和实体类对数据操作.

//JPA会根据类名的规则,自动将该类的作为对应接口的实现类
@Repository
public class DepRepositoryImpl { @Resource
private EntityManager entityManager; public List<Dep> findAllTest(){ String sql = "select * from dep";
Query query = this.entityManager.createNativeQuery(sql, Dep.class);
List list = query.getResultList(); return list;
} }

4.直接在Service层调用接口方法对数据库进行操作.

   //注入接口对象
@Resource
private DepRepository depRepository; Optional<Dep> optional = this.depRepository.findById(uuid);
//获取到的optional是一个代理对象
//这个代理对象是与数据库绑定的
//当改变这个代理对象的属性的值时,会自动改变数据库中的值
if (optional.isPresent()){
//把代理对象转为实体类对象
Dep dep = optional.get();
return dep;
}

  

二.lombok

lombok主要是对创建的实体类的一些简化,

一些常用的lombok注解:

@Data :   给实体类配置get和set,tostring方法

@AllgrgsConstructor  ;配置一个全参的构造方法

@NoArgsConstrutor : 添加一个空的构造方法

@Builder :创建建造者模式来创建对象.

@Getter : 创建get方式

@Setter ; 创建set方法

@Slf4j  :创建日志对象.

package com.example.demo.entity;
import lombok.*; @Data //真加getter&setter,toString,equals,hashcode
//@Getter //只真加getter方法 其他同理
@AllArgsConstructor //添加一个全参数的构造方法
@NoArgsConstructor //添加一个无参数的构造方法
@Builder //真加一个建造者模式来创建对象
public class Emp { private Long uuid;
private String name;
private String email;
private String tele;
}

  

springBoot_JPA和lombok的更多相关文章

  1. 记录一次bug解决过程:eclipse集成lombok插件

    一 总结 eclipse集成插件lombok: 启动Spring Boot项目: sublime全局搜索关键字:ctrl + shift + F JDK8中的lambda表达式使用 二 BUG描述:集 ...

  2. lombok在IntelliJ IDEA下的使用

    lombok是一款可以精减java代码.提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码.代码越少,意味着出b ...

  3. lombok 简化java代码注解

    lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...

  4. Lombok 安装、入门 - 消除冗长的 java 代码

    lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码. lombok 的官方网址:http://projectlombok.org/  lombok 安装1. ...

  5. lombok介绍

    Lombok是一种JavaArchive(JAR)文件,可用来消除Java代码的冗长.在写代码时,可以通过这个插件消除各种getter和setter,toString等常用方法. lombok 注解: ...

  6. Lombok简化Java代码

    导包:import lombok.Data; Lombok简化Java代码: 在Lombok中,生成构造方法的annotation一共有三个:@NoArgsConstructor, @Required ...

  7. myeclipse 手动安装 lombok

    1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹目录下    2. 打开 eclipse.ini / myeclipse.ini,在最后面插 ...

  8. lombok+slf4j+logback SLF4J和Logback日志框架详解

    maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...

  9. Java代码简化神器-Lombok

    一.背景 前段时间在开源社区中发现了一个比较牛逼的简化Java代码的神器-Lombok,接着自己写了demo进行测试和练习,感觉真的很不错,特此分享给需要的小伙伴们~ 二.开发之前的准备 1.lomb ...

随机推荐

  1. java之jvm学习笔记六(实践写自己的安全管理器)

    安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用AccessController的checkPerssiom方法,访问控 ...

  2. sklearn中模型评估和预测

    一.模型验证方法如下: 通过交叉验证得分:model_sleection.cross_val_score(estimator,X) 对每个输入数据点产生交叉验证估计:model_selection.c ...

  3. 知识图谱+Recorder︱中文知识图谱API与工具、科研机构与算法框架

    目录 分为两个部分,笔者看到的知识图谱在商业领域的应用,外加看到的一些算法框架与研究机构. 文章目录 @ 一.知识图谱商业应用 01 唯品金融大数据 02 PlantData知识图谱数据智能平台 03 ...

  4. Jmeter----函数助手参数化

    要填写开始日期和结束日期和赋值的变量名

  5. MZ头里面的东西。真他妈多

    最后一个字段,也就是e_lfanew,的值表示PE头相对于文件首部的偏移,也就是说,在它的值所对应的位置,就是PE头的地址, 数据结构名称 值 e_magic: 0x5A4D->‘MZ’ e_c ...

  6. win10 +Kinect V1 1414环境配置

    win10 +Kinect V1 1414环境配置 想起老Lab的机器人头顶的Kinect 安装准备 demo展示 人脸识别 照片不能够检测到人脸 可以去除背景 检测骨架 想起老Lab的机器人头顶的K ...

  7. 重写(Overriding)和重载(Overloading)

    方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式. (1)方法重载是一个类中定义了多 ...

  8. Android开发 MediaPlayer播放raw资源MP3文件

    代码 private MediaPlayer mRingPlayer; /** * 播放铃声 */ private void startRing(){ if (mRingPlayer != null) ...

  9. postman连接不了localhost问题解决

    学习搭建服务器可用postman 连接不了localhost的端口 网上好多教程是这样连接 看完视频后我们是这样 找了大量资料都解决不了,什么版本,什么证书的都不好使,最简单的就是去掉http:// ...

  10. java运行字符串代码

    本文链接:https://blog.csdn.net/junlong750/article/details/50945883