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

重庆品牌网站建设公司排名设计制作建筑模型综合实践教案

重庆品牌网站建设公司排名,设计制作建筑模型综合实践教案,上高县建设局网站,怎样做买东西的网站本文已收录于专栏 《Java》 目录 背景介绍概念说明单字段模糊匹配#xff1a;多字段模糊匹配#xff1a; 实现过程代码实现1.写一个实体类去实现Specification接口#xff0c;重写toPredicate方法2.定义一个接口去继承JpaRepository接口#xff0c;并指定返回的类型和参数类…本文已收录于专栏 《Java》 目录 背景介绍概念说明单字段模糊匹配多字段模糊匹配 实现过程代码实现1.写一个实体类去实现Specification接口重写toPredicate方法2.定义一个接口去继承JpaRepository接口并指定返回的类型和参数类型3.在业务类中调用声明的接口4.在Controller中直接调用业务类中的方法即可 执行结果 其他方式1.使用JPQL进行模糊查询2.使用Spring Data JPA的Query By Example进行模糊查询3.使用Spring Data JPA的Query注解进行模糊查询 总结提升 背景介绍 在我们的项目中很多的业务都会设计模糊查询例如按照姓氏去获取人员的信息按照手机号的前三位去获取人员的信息等。我们除了正常的手写模糊查询的sql语句去获取信息之外还可以使用JPA自带的API来实现任意字段的模糊查询。JPA已经给我们封装好了。当我们对模糊查询非常熟悉了之后直接拿来时候即可。 概念说明 单字段模糊匹配 说明在一个字段中无论关键字出现在什么位置上只要有关键词即可。 场景获取手机号开头为187的学生 应用SELECT*FROM table_name WHERE BINARY column_name LIKE%keyword%; 多字段模糊匹配 说明在多个字段中无论关键字出现在什么位置上只要每个字段有每个字段指定的关键词即可。 场景获取手机号开头为187并且姓氏为武的学生 应用SELECT*FROM table_name WHERE BINARY column1_name LIKE%keyword1%AND column2_name LIKE%keyword2%; 注BINARY函数是开启大小写敏感的函数底层逻辑是通过Ascii码的方式比较的。因为数据库默认是对大小写不敏感的也就是我们在查询名称为wzl数据的时候也会把名称为Wzl的数据也查询出来。 实现过程 代码实现 1.写一个实体类去实现Specification接口重写toPredicate方法 import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.tfjybj.dao.UserDao; import com.tfjybj.utils.SnowflakeIdWorker; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Example; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils;import javax.annotation.Resource; import javax.persistence.*; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Date; import java.util.List;/*** BelongsProject: incentive* BelongsPackage: com.tfjybj.service* Author: Wuzilong* Description: 描述什么人干什么事儿* CreateTime: 2023-08-28 14:48* Version: 1.0*/ Table Entity Service Data public class User implements SpecificationUser {IdJsonSerialize(using com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)private Long id;private String account;private String password;private String phone;private Date createTime;private Date updateTime;private Integer isDelete;ResourceTransientprivate UserDao userDao;Overridepublic Predicate toPredicate(RootUser root, CriteriaQuery? criteriaQuery, CriteriaBuilder criteriaBuilder) {ListString nonNullFields new ArrayList();Field[] declaredFields this.getClass().getDeclaredFields();for (Field field : declaredFields) {field.setAccessible(true);try {Object value field.get(this);if (value ! null) {nonNullFields.add(field.getName());}} catch (IllegalAccessException e) {e.printStackTrace();}}Predicate[] predicates new Predicate[nonNullFields.size()1];for (int i 0; i nonNullFields.size(); i) {try {predicates[i] criteriaBuilder.like(root.get(nonNullFields.get(i)), % this.getClass().getDeclaredField(nonNullFields.get(i)).get(this) %);} catch (Exception e) {e.printStackTrace();}}// 添加额外的条件排除isdelete1的数据predicates[nonNullFields.size()] criteriaBuilder.notEqual(root.get(isDelete), 1);return criteriaBuilder.and(predicates);} }本文中实现的是and方式的模糊查询也可是使用or的方式进行模糊查询也就是多个字段中都包含一个关键字。 2.定义一个接口去继承JpaRepository接口并指定返回的类型和参数类型 Entity import com.tfjybj.service.User; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository;import java.util.List;/*** BelongsProject: incentive* BelongsPackage: com.tfjybj.dao* Author: Wuzilong* Description: 描述什么人干什么事儿* CreateTime: 2023-08-28 14:48* Version: 1.0*/ Repository public interface UserDao extends JpaRepositoryUser, Long {ListUser findAll(SpecificationUser userInfo); } 3.在业务类中调用声明的接口 Entitypublic ListUser selectToFuzzy(User userInfo){ListUser userInfoList userDao.findAll(userInfo);return userInfoList;}4.在Controller中直接调用业务类中的方法即可 RequestMapping(valueselectToFuzzy,method RequestMethod.POST)//模糊查询用户的信息public ListUser selectToFuzzy(RequestBody User userInfo){ListUser users user.selectToFuzzy(userInfo);return users;}执行结果 可以看到我们的入参都是对应字段值的一部分内容phone字段传入的是187它会把phone字段中包含187的所有数据都返回回来。同样两个字段一起模糊查询也是一样。 其他方式 1.使用JPQL进行模糊查询 使用LIKE关键字结合通配符%进行模糊匹配。 例如SELECT e FROM Employee e WHERE e.name LIKE %John% 2.使用Spring Data JPA的Query By Example进行模糊查询 创建一个实体对象作为查询条件设置需要模糊匹配的属性值。 例如ExampleMatcher matcher ExampleMatcher.matching().withMatcher(name, match - match.contains()); ExampleEmployee example Example.of(employee, matcher); 3.使用Spring Data JPA的Query注解进行模糊查询 在Repository接口中使用Query注解定义自定义的查询方法。 在查询方法中使用%通配符进行模糊匹配。 例如Query(SELECT e FROM Employee e WHERE e.name LIKE %?1%) ListEmployee findByName(String name); 总结提升 根据自己的业务需求去选择使用哪一种模糊查询的方式。底层原理都是一样的。JPA封装了一些公共的内容我们开发的过程中使用起来就比较容易和简单。但是我们在使用的过程中也要明白底层是如何实现不能只停留在会使用的阶段中。知其然也要知其所以然。 此文章对你有用的话记得留言点赞收藏哦
http://www.yutouwan.com/news/304686/

相关文章:

  • 手机网站html模板下载成都网站制作机构
  • 怎么评价一个网站设计做的好坏宁波网站搭建
  • 手机端视频网站模板做电子商务网站的总结
  • 设计一个企业网站首页爱链接网如何使用
  • 广州市公司网站建设公司山西太原建设厅官方网站
  • 简述一般网站开发方式深圳市网站首页
  • 海拉尔网站建设+网站设计昨晚兰州发生了什么事
  • 打开网址跳转到国外网站四川住房建设厅网站
  • 网站建设推广特色江苏网站建设市场
  • 企业网站asp小程序商城服务好得
  • 天津网站建设推荐安徽秒搜科技怎么做直播网站刷弹幕
  • 企业网站备案条件京东商城网站开发平台
  • 旅游网站模板图片睢县做网站的公司
  • 成都专业网站设计免费咨询公司官网制作需要多少钱一个
  • 做博客网站什么蓝色 适合公司网站主色
  • 怎么制作购物网站免费ppt模板 网站开发
  • 长春网络建站模板房地产网站开发公司
  • 怎样防止别人利用自己的电脑做网站服务器北京交友最好的网站建设
  • 现在主流网站用什么做的专做hip hop音乐的网站
  • php个人网站源码下载弄几个的网站
  • 网站维护案例分析wordpress翻页显示404
  • 惠州网页建站模板网站开发 避免 字段变化 代码
  • wordpress怎么安装插件珠海网站seo
  • wordpress如何加入备案许可证编号番禺seo
  • 网站html静态化解决方案网站优化怎么学
  • 做彩票平台网站吗办公室装修设计招商
  • 如何抄袭网站网站技巧
  • 中冶东北建设最新网站百度网站安全检测
  • 台州公司网站建设wordpress微信图片
  • 手机建设中网站页面设计是什么专业