Flowable源码分析:SpringDataJPA实现从自己创建的数据库中读取指定信...

Flowable源码分析:SpringDataJPA实现从自己创建的数据库中读取指定信...

2023年8月1日发(作者:)

Flowable源码分析:SpringDataJPA实现从⾃⼰创建的数据库中读取指定信息在Flowable-ui-task模块查询数据库相关内容记录⽬录:1. 读取信息为Flowable内部对象2. 读取信息为⾃定义对象属性1. 读取信息为ProcessDefinition(Flowable内部对象)ProcessDefinition为Flowable中定义的对象,因此有提供专门的数据库查询接⼝,如:以id的⽅式cessDefinition(processDefinitionId)以id列表的⽅式ProcessDefinitionQuery definitionQuery = ProcessDefinitionQuery();List definitions = sDefinitionIds(processDefinitionIds).list();⾃定义sql⽅式NativeProcessDefinitionQuery nativeProcessDefinitionQuery = NativeProcessDefinitionQuery();List definitions = ("SELECT act_re_procdef.* " + "FROM act_re_procdef,act_proc " + "WHERE act_a.A_ID_ = #{aId} AND act_re__ = act__DEF_ID_ " + "ORDER BY a" + "DESC") .parameter("a", a).list();项⽬中暂时只了解、⽤到以上⼏种查询接⼝,这些查询仅限Flowable内部定义的对象,对⾃定义对象查询没有提供相应接⼝。本⽂在以下部分记录实验室⼩伙伴介绍的使⽤JPA实现⾃定义对象的查询。2. Spring Data JPA实现Flowable⾃定义对象查询添加依赖本项⽬将依赖添加在了logic模块下的pom⽂件中 spring-boot-starter-data-jpa mysql mysql-connector-java runtime tlombok lombok true spring-boot-starter-test test相关配置在app模块的ties中添加以下maven配置# -class-name==jdbc:mysql://127.0.0.1:3306/flowable?characterEncoding=me=rd=root# se=-sql=-auto=-strategy=t=5Dialect创建实体@Entity@Table(name = "act_a")public class MyObject{ @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "ID_", unique = true, nullable = false) private Integer id; @Column(name = "NAME_", unique = true) private String name; @Column(name = "ADDRESS_", unique = true) private String address; public MyObject(String name, String address) { = name; s= address; } public MyObject() { } // getters and setters}实体类名与数据库表名不⼀样时可在Table的name属性中指定数据库表名同样,属性名与数据库中字段名不⼀样时,可在column的name属性中指定对应数据库表中的字段名dao层:Repository构建该接⼝JPA会⾃动注⼊实现,不需要⾃⼰另外编写代码public interface MyObjectRepository extends JpaRepository { @Query(value = "select ID_, NAME_, ADDRESS_ from act_a where ACT_AId_= ?1", nativeQuery = true) List findByAId(String aId);}查询时select后⾯的字段需要写上实体类定义的所有属性对应的字段(此处为id、name、address对应的字段),否则会报错“某列找不到”另外,以下引⽤接⼝⽅法名实现数据库操作的语法Spring Data JPA 可以根据接⼝⽅法名来实现数据库操作,主要的语法是 findXXBy、readAXXBy、queryXXBy、countXXBy、getXXBy 后⾯跟属性名称,利⽤这个功能仅需要在定义的 Repository 中添加对应的⽅法名即可,使⽤时 Spring Boot 会⾃动帮我们实现.service部分@Resourceprivate MyObjectRepository myObjectRepository;public ResultListDataRepresentation getMyObjects(String aId){ List myObjects = AId(aId); ResultListDataRepresentation result = new ResultListDataRepresentation(myObjects ); return result; }APPLYCATION程序⼊⼝如果没有在以上⽂件的根⽬录处(如果以上⽂件为e,则根⽬录可为),则程序⼊⼝处需添加扫描注解本项⽬中如下注解扫描如下:@SpringBootApplication(proxyBeanMethods = false)@ComponentScan(basePackages = {"e", ""}) // 扫描service、controller层@EnableJpaRepositories(basePackages = "tory") // 扫描dao层(repository)@EntityScan(basePackages = "") // 扫描实体层public class FlowableTaskApplication extends SpringBootServletInitializer { ......}

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690874718a452337.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信