当前位置: 首页 > news >正文

东莞技术支持 骏域网站建设三丰云做网站步骤

东莞技术支持 骏域网站建设,三丰云做网站步骤,图片类网站开发实验总结,南昌地宝网官网前面介绍了在Spring Boot项目中集成JPA框架#xff0c;实现数据的增、删、改、查等功能。Spring Data JPA的使用非常简单#xff0c;只需继承JpaRepository即可实现完整的数据操作方法#xff0c;无须任何数据访问层和SQL语句。JPA除了这些功能和优势之外#xff0c;还有非…前面介绍了在Spring Boot项目中集成JPA框架实现数据的增、删、改、查等功能。Spring Data JPA的使用非常简单只需继承JpaRepository即可实现完整的数据操作方法无须任何数据访问层和SQL语句。JPA除了这些功能和优势之外还有非常强大的数据查询功能。以前复杂的查询都需要拼接很多查询条件JPA有非常方便和优雅的方式来解决。接下来就聊一聊JPA的查询功能从而体验Spring Data JPA的强大。 1.预生成方法 前面介绍了JpaRepository接口实现访问数据库的所有关键接口比如exists()、save()、findAll()、delete()等方法。创建UserRepository类继承JpaRepository类拥有父类中所有预先生成的方法。 调用这些方法也特别简单上面所有JpaRepository父类拥有的方法都可以直接调用无须声明。示例代码如下 userRespository.existsByld((long) 1); userRespository.save(user); userRespository.findById((long) 1); userRespository.findAll(); userRespository.delete(user); userRespository.deleteById((long) 1);2.自定义简单查询 JPA除了可以直接使用JpaRepository接口提供的基础功能外还支持根据实体的某个属性实现数据库操作Spring Data JPA能够根据其方法名为其自动生成SQL支持的关键字有find、query、get、read、count、delete等主要的语法是findByXX、queryByXX、getByXX、readByXX、countByXX等。利用这个功能仅需要在定义的Repository中添加对应的方法名即可无须具体实现使用时Spring Data JPA会自动根据方法名来生成SQL语句。 2.1 属性查询 如果想根据实体的name属性来查询User的信息那么直接在UserRepository中增加一个接口声明即可 User findByUserName(String userName);从上面的示例可以看到我们可以在UserRepository接口中声明findByUserName方法无须实现JPA会自动生成对应的实现方法及其SQL语句。 2.2 组合查询 JPA不仅支持单个属性查询还支持多个属性查询根据And、Or等关键字进行组合查询示例代码如下 User findByNameOrPassword (String name, String password);在上面的示例中根据姓名和密码两个属性组合查询属性名称与个数要与参数的位置与个数一一对应。可以根据查询的条件不断地添加和拼接Spring Data JPA都可以正确解析和执行。 2.3 JPA关键字 JPA的自定义查询除了And、Or关键字外基本上SQL语法中的关键字JPA都支持比如like、between等。 按照Spring Data的规范查询方法以find、read、get开头。涉及查询条件时条件的属性用条件关键字进行连接。需要注意的是条件属性首字母大写。 3.自定义SQL查询 一般的数据查询功能都可以通过定义方法名的方式来实现。但是有些特殊的场景可能需要自定义的SQL来实现数据查询功能。Spring Data JPA同样可以完美支持Spring Data JPA提供了Query注解通过注解可以自定义HQL或SQL实现复杂的数据查询功能。下面通过示例程序演示Query注解实现自定义SQL查询。 3.1 HQL查询 在对应查询方法上使用Query注解在注解内写HQL来查询内容 Query(select u from User u) ListUser findALL();在上面的示例中使用Query注解定义自定义的HQL语句实现自定义HQL语句查询。使用HQL比原生的SQL可读性更强实现面向对象的方式操作数据。使用HQL时需要注意 1from后面跟的是实体类而不是数据表名。 2查询字段使用的是实体类中的属性而不是数据表中的字段。 3select后面不能跟“*”应为实体类中的属性。 3.2 SQL查询 JPA除了支持HQL语句查询外还可以直接使用SQL语句这样比较直观只需再添加一个参数“nativeQuery true”即可 Query(valueselect * from user u where u.name ?1,nativeQuery true) ListUser findByName(String name);上面示例中的“?1”表示方法参数中的顺序“nativeQuery true”表示执行原生SQL语句。除了按照这种方式传参外还可以使用Param传值方式 Query(valueselect u from User u where u.password :password) ListUser findByPassword(Param(password) String password);3.3 修改和删除 除了自定义查询语句外Query注解同样可以用于定义修改和删除语句只不过还需要加上Modifying注解。示例代码如下 Modifying Query(update User set userName ?1 where id ?2) int modifyById(String userName, Long id);Modifying Query(delete from User where id ?1) void deleteUserById(Long id);在上面的示例中自定义delete和update语句需要添加Modifying注解。需要注意的是使用时需要在Repository或者更上层增加Transactional注解确保数据能成功写入数据库。 4.已命名查询 除了使用Query注解外还可以使用NamedQuery与NameQueries等注解定义命名查询。JPA的命名查询实际上就是给SQL查询语句起一个名字执行查询时就是直接使用起的名字避免重复写JPQL语句使得查询方法能够复用。下面通过示例程序演示JPA已命名查询。 4.1 定义命名查询 在实体类中NamedQuery注解定义一个命名查询语句示例代码如下 Entity Table(nameuser) NamedQuery(namefindAllUser, querySELECT U FROM User u) public class User {}在上面的示例中NamedQuery中的name属性指定命名查询的名称query属性指定命名查询的语句。如果要定义多个命名查询方法则需要使用NamedQueries注解 Entity Table(nameusers) NamedQueries({NamedQuery(name findAllUser, query SELECT U FROM User u),NamedQuery(name findUserWithId, query SELECT U FROM User u WHERE u.id ?1),NamedQuery(name findUserWithName, query SELECT U FROM User u WHERE u.name :name) }) public class User {}在上面的示例中在User实体类中定义了findAllUser()、findUserWithId()、findUserWithName()三种方法。 4.2 调用命名查询 定义命名查询后可以使用EntityManager类中的createNamedQuery()方法传入命名查询的名称来创建查询 ResourceEntityManagerFactory emf;Testpublic void testNamedQuery() {EntityManager em emf.createEntityManager();// 根User实体中定义的命名查询Query query em.createNamedQuery(findUserWithName);query.setParameter(name, ysxq);ListUser users query.getResultList();for (User u : users) {System.out.println(name: u.getName() ,age: u.getAge());}}在上面的示例中使用createNamedQuery创建对应的查询JPA会先根据传入的查询名查找对应的NamedQuery然后通过调用getResultList()方法执行查询并返回结果。 除了使用NamedQuery注解的方式之外Spring Data JPA提供的Named查询可以支持将SQL语句写至XML文件中实现SQL与Java代码的分离。在resources/META-INF目录下创建orm.xml文件并定义命名方法参考配置如下 ?xml version1.0 encodingUTF-8? entity-mappings version2.0xmlnshttp://java.sun.com/xml/ns/persistence/ormxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://java.sun.com/xml/ns/persistence/ormhttp://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence/orm_2_2.xsdnamed-native-query namefindUserWithName2 result-classcom.example.ysxq.model.Userdescription通过name查询用户数据/descriptionqueryselect u.id , u.name , u.password , u.age from users u where u.name :name/query/named-native-query /entity-mappings在orm.xml文件中使用标签定义queryByName的命名查询使用XML的方式与使用NamedQuery注解方式的效果是一样的。只是将SQL语句写至XML文件中实现SQL与Java代码的分离使得定义的Java实体类看起来不那么复杂、臃肿。
http://www.hkea.cn/news/14387834/

相关文章:

  • 雄县哪里有建设网站的wordpress订单推送微信
  • 如何给网站续费网站建设着
  • 有域名后怎么建网站中关村在线网站的建设
  • 怎么用自己的网站做邮箱产品设计出来好找工作吗
  • 博客网站排名大全番禺广州网站建设
  • 企业网站建立流程的第一步是做软件赚钱吗
  • 域名如何绑定网站pc 移动网站 模板
  • 广州做网站公司哪家好腾讯云wordpress插件下载
  • 中国建设招标信息网站开网店详细步骤
  • 网站策划的知识网站开发网上悼念
  • 深圳做网站乐云seo598做二手设备的网站
  • 网站建设与网页设计制作wordpress代码缩进
  • idc销售网站php源码建立网站的详细步骤知乎
  • 个人网站开发公司seo网站架构设计
  • 山东住房城乡建设部网站洛阳东翔科技做的网站
  • 自学织梦做网站要多久dw做购物网站
  • 网站模板源码仿京东网站模板
  • 青岛网站设计案例wordpress 主机和域名绑定
  • 找人建个网站多少钱杭州网站建设网
  • 软件下载大全网站无锡网站建设首选捷搜
  • 外贸网站建设推广培训洛阳网站建设的公司哪家好
  • 宝贝做网站甘肃省城乡住房建设厅网站首页
  • 专业网站改版网站建设咨
  • 江西省网站建设腾讯企点网页版
  • 网络管理系统的组成西安seo网站关键词
  • 安徽省建设厅人员名单官方网站网站开发者工具的网络选项
  • 响应式网站设计公司wordpress 主题字号
  • 个人网站上传有啥要求网站建设报告家教总结
  • 沈阳网站建设优秀公司小程序跳转网页方法
  • 网站建设 翰臣科技襄阳宜城网站建设