1.引入jar

  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-solr</artifactId><version>2.4.13</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.solr</groupId><artifactId>solr-solrj</artifactId></dependency><!-- <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!--集成redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis</artifactId><version>1.4.1.RELEASE</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.6.1</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.5</version><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--mybatis--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.5</version></dependency><!--mybatis 代码生成器--><!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.4.0</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.16</version><scope>compile</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency>

2.创建数据库实体类对应solr实体绑定


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.apache.solr.client.solrj.beans.Field;
import java.io.Serializable;@Data
@TableName("user")
public class User implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "id", type = IdType.AUTO)@Fieldprivate Integer id;@TableField("username")@Fieldprivate String username;@TableField("password")@Fieldprivate String password;@TableField("status")@Fieldprivate Integer status;@TableField("updateTime")@Fieldprivate Data updateTime;}

数据库

solr中data-config.xml 实体熟悉

<document><entity name="user" transformer="RegexTransformer" pk="id"query="select * from [user]"  deltaImportQuery = "SELECT * FROM [user] where id = '${dataimporter.delta.id}'"deltaQuery = "SELECT id FROM [user] where updateTime > '${dataimporter.last_index_time}'"><field column="id" name="id"/><field column="status" name="status"/><field column="password" name="password"/><field column="username" name="username"/><field column="updateTime" name="updateTime"/></entity></document>

创建userMapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.solrdemo.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;@Repository
public interface userMapper extends BaseMapper<User> {List<User> setUser();int delUser(@Param("id")int id);}

创建SolrServiceImpl


import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.solrdemo.Service.SolrService;
import com.example.solrdemo.entity.User;
import com.example.solrdemo.mapper.userMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;@Service
public class SolrServiceImpl extends ServiceImpl<userMapper, User> implements SolrService {@Autowired userMapper userMapper;@Overridepublic  List<User> setUser() {List<User> users = userMapper.setUser();return users;}@Overridepublic int delUser(int id) {int users = userMapper.delUser(id);return users;}@Overridepublic int addUser(User user) {return baseMapper.insert(user);}
}

创建SolrService


import com.baomidou.mybatisplus.extension.service.IService;
import com.example.solrdemo.entity.User;
import java.util.List;public interface SolrService extends IService<User> {List<User> setUser();int delUser(int id);int addUser(User user);
}

创建SolrController


import com.example.solrdemo.Service.SolrService;
import com.example.solrdemo.entity.User;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;@RestController
@RequestMapping("solr")
public class SolrController {@Autowiredprivate SolrService solrService;@Autowiredprivate SolrClient solrClient;/*    //启动加载一次@PostConstructpublic void init() {try {List<User>users = solrService.setUser();solrClient.addBeans(users);solrClient.commit();}catch (Exception e){System.out.print(e);}}*///根据id删除数据@RequestMapping("/del")public void  delUser(Integer id){try {//根据id删除数据库数据int i = solrService.delUser(id);if (i==1){//删除所有的索引solrClient.deleteByQuery("id:"+id);//提交修改solrClient.commit();}}catch (Exception e){}}@RequestMapping("/addUser" )public void addUser(@RequestBody User user) {try {//数据库添加数据int i = solrService.addUser(user);if (i==1){solrClient.addBean(user);solrClient.commit();}}catch (Exception e){System.out.print(e);}}@RequestMapping("/query")public  Object  query() throws IOException, SolrServerException {try {//第一种方式
//        Map<String, String> queryParamMap = new HashMap<String, String>();
//        queryParamMap.put("q", "*:*");
//        queryParamMap.put("f1","id,name");
//        queryParamMap.put("sort","id asc");
//        MapSolrParams mapSolrParams = new MapSolrParams(queryParamMap);
//        solrClient.query(mapSolrParams);//第二种方式SolrQuery solrQuery  = new SolrQuery();solrQuery.setQuery("*:*");
//        solrQuery.addField("*");//solrQuery.add("q","id:4567");solrQuery.setSort("id", SolrQuery.ORDER.asc);//设置查询的条数solrQuery.setRows(50);//设置查询的开始solrQuery.setStart(0);QueryResponse response = solrClient.query(solrQuery);SolrDocumentList documentList = response.getResults();return documentList;}catch (Exception e){return e;}}}

配置application.properties

server.port=8085
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://192.xxx.x.xxx;DatabaseName=nanchenDemo
spring.datasource.username=xx
spring.datasource.password=xxx

配置application.yml中solr

spring:data:solr:host: http://192.168.x.xxx:8983/solr/new_core

配置启动类的定时任务注解

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling
@MapperScan("com.example.solrdemo.mapper")
public class SolrDemoApplication {public static void main(String[] args) {SpringApplication.run(SolrDemoApplication.class, args);}}

配置定时任务


import com.example.solrdemo.Service.SolrService;
import com.example.solrdemo.entity.User;
import org.apache.solr.client.solrj.SolrClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import java.util.List;@Component
@EnableScheduling
public class Scheduler {@Autowiredprivate SolrService solrService;@Autowiredprivate SolrClient solrClient;@Scheduled(cron = "*/5 * * * * ?")public void TestTask() {try {List<User> users = solrService.setUser();//获取数据库数据solrClient.addBeans(users);solrClient.commit();//添加到solrSystem.out.print("添加成功");}catch (Exception e){System.out.print(e);}}}

控制台打印

solr数据查看

数据库数据查看

SpringBoot集成solr定时任务从数据库数据更新到sorl数据相关推荐

  1. Springboot集成quartz定时任务可视化配置​​​​​​​

    转自我的个人博客:Springboot集成quartz定时任务可视化配置 使用quartz定时任务已经有一段时间了,今天记录一下Springboot 2.x集成Quartz. 1.引入quartz j ...

  2. 达梦(DM)4、SpringBoot集成MyBatisPlus+达梦数据库(DM)

    最近在做一个政府项目,由于项目之前使用的 MySQL 数据库,为了适配国产化,需要将 MySQL 换成 达梦数据库(DM),本次我选择了达梦数据库8(DM8),以下是切换过程 写在前面 关于Sprin ...

  3. Springboot集成Quartz定时任务yml文件配置方式

    构建maven项目,引入maven依赖包 其中quartz.quartz-jobs.spring-boot-starter-quartz.spring-context-support  四个依赖包为q ...

  4. 定时任务:springboot集成Quartz实现多任务多触发的动态管理

    本文主要讲解以下几个方面: 1.定时任务的定义及其常见的模式 2.springboot集成quart实例 3.中途会遇到的一些问题 一.定时任务的定义及其常见的模式 1)定时任务的定义 首先要明白的是 ...

  5. 【SpringBoot高级篇】SpringBoot集成MongDB数据库

    [SpringBoot高级篇]SpringBoot集成MongDB数据库 MongoDB是什么 ? 主要特点 MongoDB管理 工具 MongoDB 基本概念 数据库 文档(Document) 集合 ...

  6. SpringBoot集成Druid和数据库密码加密

    Druid是阿里开发的数据库连接池,通过简单的配置,可以实现数据库的连接,性能特别强大,可以在页面访问,包括监控数据库性能参数,慢SQL统计,当然还包括数据库连接等. 今天主要记录一下SpringBo ...

  7. SpringBoot集成mysql-connector-java数据库驱动

    官方文档:https://dev.mysql.com/doc/connector-j/8.0/en/ MySQL使用MySQL Connector/J 用Java编程语言开发的客户端应用程序提供连接, ...

  8. java quartz 动态执行,浅谈SpringBoot集成Quartz动态定时任务

    SpringBoot自带schedule 沿用的springboot少xml配置的优良传统,本身支持表达式等多种定时任务 注意在程序启动的时候加上@EnableScheduling @Schedule ...

  9. 达梦DCA之SpringBoot集成达梦数据库

    受"华为.中兴事件"影响,我国科技尤其是上游核心技术受制于人的现状对我国经济发展.社会稳定等都提出了严峻考验.大力发展科技产业,鼓励科技创新,成为当下时不我待的命题.中美贸易战以来 ...

最新文章

  1. 异常 java.lang.NumberFormatException: For input string:
  2. 单片机 c语言 按键长按短按,求助:单片机一键长按与短按按键实现的c程序有问题...
  3. ngx_lua模块中的共享内存字典项API
  4. 手把手教你完成CSDN对接百度统计 看完这篇文章你还不会对接 欢迎您提刀顺着网线来砍我!!!!
  5. python 计算过程图片_[Python图像处理]九.图像形态学相关运算
  6. Oracle RAC 修改 IP 地址
  7. read -p 的使用
  8. 博客开通了-里面有秘密哦
  9. 44.事件分发(示例)
  10. uni-app商城源码/公众号/小程序/APP多端适配
  11. LORD MicroStrain 惯性传感系统
  12. 鸡与蛋问题(先有Class还是先有Object)
  13. Oracle 锁表查询
  14. 开放下载 | 2022阿里妈妈技术年刊来啦!
  15. java中static什么意思
  16. 苹果向在巴西被盗的iPhone客户支付赔偿金
  17. 谷歌彻底放弃OKR了
  18. Java设计模式——备忘录模式
  19. 什么是心智,如何占领用户心智
  20. http长连接与短连接

热门文章

  1. 【JavaScript】使用js实现冒泡排序
  2. 嵌入式系统 - 时间管理
  3. 前端连接websocket失败_Websocket出现的错误
  4. 泰国.寂静的普吉岛(图片欣赏)
  5. log4j 日志格式详解
  6. c语言的float阶码
  7. iOS 组件化,插件化,模块化设计思路分析
  8. 【软件生命周期各个阶段详解】
  9. php在线模拟高考志愿,志愿绿卡|职业测试|模拟志愿填报-高考志愿网
  10. 黑盒测试简介以及方法简介