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

免费招聘网站推荐网站建设制作方法

免费招聘网站推荐,网站建设制作方法,自己的电脑怎么做网站,3d建模自学教程原本项目是基于MYSQL的#xff0c;现因需求将其转换为MYSQLElasticsearch#xff0c;MYSQL的ORM使用的是Spring Data Jpa#xff0c;Mybatis的转换与其类似#xff0c;有人看再更先看原项目原项目的DAO层Repository public interface UserRepository extends JpaRepository…原本项目是基于MYSQL的现因需求将其转换为MYSQLElasticsearchMYSQL的ORM使用的是Spring Data JpaMybatis的转换与其类似有人看再更先看原项目原项目的DAO层Repository public interface UserRepository extends JpaRepositoryUser, Long {OptionalUser findOneByActivationKey(String activationKey);ListUser findAllByActivatedIsFalseAndCreatedDateBefore(Instant dateTime);OptionalUser findOneByResetKey(String resetKey);OptionalUser findOneByEmailIgnoreCase(String email);OptionalUser findOneByLogin(String login);EntityGraph(attributePaths authorities)OptionalUser findOneWithAuthoritiesById(Long id);EntityGraph(attributePaths authorities)OptionalUser findOneWithAuthoritiesByLogin(String login);EntityGraph(attributePaths authorities)OptionalUser findOneWithAuthoritiesByEmail(String email);PageUser findAllByLoginNot(Pageable pageable, String login); }原项目的DTO1.User.javaEntity Table(name user) public class User implements Serializable {private static final long serialVersionUID 1L;IdGeneratedValue(strategy GenerationType.IDENTITY)private Long id;NotNullPattern(regexp Constants.LOGIN_REGEX)Size(min 1, max 50)Column(length 50, unique true, nullable false)private String login;JsonIgnoreNotNullSize(min 60, max 60)Column(name password_hash, length 60, nullable false)private String password;EmailSize(min 5, max 254)Column(length 254, unique true)private String email;NotNullColumn(nullable false)private boolean activated false;Column(name reset_date)private Instant resetDate null;JsonIgnoreManyToManyJoinTable(name jhi_user_authority,joinColumns {JoinColumn(name user_id, referencedColumnName id)},inverseJoinColumns {JoinColumn(name authority_name, referencedColumnName name)})BatchSize(size 20)private SetAuthority authorities new HashSet();//... } 2.Authority.javaEntity Table(name jhi_authority) public class Authority implements Serializable {private static final long serialVersionUID 1L;NotNullSize(max 50)IdColumn(length 50)private String name; }可以看出原项目使用Spring data hibernate 作为ORM规范的使用其格式进行自动生成SQL语句接下来就是转换成elasticsearch的时候了这里我不采用elasticsearch官网的client依赖包而是spring-data-elasticsearch原因如下官网提供的low包就是一个httpclient做业务操作时需要自己编写json几百个接口就要编写几百次json过于麻烦官网提供的high包必须要与elasticsearch对应版本才行不然项目就运行不起来原项目是使用Spring-data-jpa的这里用spring-data-elasticsearch在更改时会方便很多①首先先配置elasticsearchpom.xml加入 dependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-elasticsearch/artifactId/dependency若你是spring boot项目则在 application.yml 或者 application.properties 加入spring: data:elasticsearch:cluster-nodes: localhost:9300若你是普通spring项目则看Spring Data Elasticsearch​docs.spring.io进行配置②改造DTO把原有的spring data 注解删除掉然后替换成elasticsearch的注解Document(indexName user, type doc) public class User {//这里的instant jackson无法直接从string转换为instant需要编写个编解码类JsonSerialize(using InstantJacksonSerializer.class)JsonDeserialize(using InstantJacksonDeserialize.class)private Instant createdDate;private String createdBy;private boolean activated;//原项目Id是使用Long类型这里不改但elasticsearch的话推荐使用String作为Id因为自动创建id的时候为随机字符串Idprivate Long id;private SetAuthority authorities;private String login;private String email;//... }可以看到我除了删除了原项目的注解外DTO就只有添加了 Document(indexName user, type doc) Instant是原项目使用的如果是用Date的话则使用 JsonFormat(patternyyyy-MM-dd HH:mm:ss)③改造DAO层先看改造后的public interface UserRepository extends ElasticsearchRepositoryUser, Long {OptionalUser findOneByActivationKey(String activationKey);ListUser findAllByActivatedIsFalseAndCreatedDateBefore(Instant dateTime);OptionalUser findOneByResetKey(String resetKey);OptionalUser findOneByEmailIgnoreCase(String email);OptionalUser findOneByLogin(String login);OptionalUser findOneByEmail(String email);PageUser findAllByLoginNot(Pageable pageable, String login);}将UserRepository 改为继承ElasticsearchRepositoryUser, Long 其中第一个参数为DTO第二个参数为Id把连表的with给去掉即可IDEA中用shiftF6可以很方便的若你需要特殊查询可以使用 Query({bool : {must : {field : {name : ?0}}}})PageBook findByName(String name,Pageable pageable);④关于join的问题Elasticsearch是不支持join操作的可以有以下几种解决方案因SQL不支持数组才把其放入其他表的Elasticsearch本身支持数组直接放入同一张表一对多一对一多对一情况下的可以考虑数据冗余直接加入同一张表中Elasticsearch本身储存的数据会进行压缩的数据冗余可以接受在不加索引情况下可能达到MYSQL十分之一的存储空间使用父子关系不推荐之前看到好像在将来的版本会被废弃两次查询解决join问题实在没办法了就只能这样做了在本项目中我用的是方案一再复杂点的情况之后再考虑⑤关于遇到的坑 //MYSQLSize(max 50)Column(name first_name, length 50)private String firstName;//Elasticsearchprivate String firstName;MYSQL数据库里储存的字段名都是first_name这样以下划线作为分词的而spring data Elasticsearch 我并没有找到转义的相应注解。。。。如果有人知道麻烦告诉下我的解决方案在导入数据源的时候把其改为驼峰法的结构⑥数据导入我使用的是logstash还有其他框架可以使用按需求自己决定吧
http://wiki.neutronadmin.com/news/126085/

相关文章:

  • 拍卖网站建设公司wordpress 拖拽排序
  • 点餐网站模板 手机端广州网站优
  • 南宁网站建设培训wordpress调二级分类目录
  • 我的家乡网站建设知乎营销平台
  • 企业网站制作报价表驻马店做网站建设的公司
  • 个人网站建设咨询电话网站技术
  • 永久免费的网站服务器有哪些平台网站原型图展示
  • 网站源码爬取工具做网站都要学什么
  • 耒阳市做网站的广州网站优化网站建设
  • html5video网站wordpress照片主题
  • 绵阳网站网站建设小工具文本wordpress
  • 东莞网站建设和制作国内做分销比较好的平台
  • 做相片软件网站网站开发宣传方法
  • 网站开发背景策划书久久租房网
  • 好的网站建设金山专业做网站
  • 建网站怎么弄南庄网站开发
  • 购物网站的功能一般网站的跳出率
  • 有什么好的互联网平台做网站工信部网站备案信息查询
  • 杭州做网站 做小程序百度导航官网
  • 中国建设银行网站-个人客wordpress the terms
  • 网站建设的市场调研wordpress旅游类网站模板
  • 旅游网站模块报价怎么免费发布网站
  • seo如何分析网站足球世界排名
  • 专业的东莞网站排名河北网站备案手机号码短信核验
  • 万云网络网站seo 适合哪些行业
  • 具有品牌的广州做网站wordpress 注册字段
  • 0基础做下载网站装修材料厂家哪家好
  • 山西路桥建设集团网站竞价点击软件排名
  • 如何自己学做网站开发网站 要网站icp经营许可证吗
  • asp.net开发网站好不好企业建账实训总结