SpringBoot集成solr定时任务从数据库数据更新到sorl数据
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数据相关推荐
- Springboot集成quartz定时任务可视化配置
转自我的个人博客:Springboot集成quartz定时任务可视化配置 使用quartz定时任务已经有一段时间了,今天记录一下Springboot 2.x集成Quartz. 1.引入quartz j ...
- 达梦(DM)4、SpringBoot集成MyBatisPlus+达梦数据库(DM)
最近在做一个政府项目,由于项目之前使用的 MySQL 数据库,为了适配国产化,需要将 MySQL 换成 达梦数据库(DM),本次我选择了达梦数据库8(DM8),以下是切换过程 写在前面 关于Sprin ...
- Springboot集成Quartz定时任务yml文件配置方式
构建maven项目,引入maven依赖包 其中quartz.quartz-jobs.spring-boot-starter-quartz.spring-context-support 四个依赖包为q ...
- 定时任务:springboot集成Quartz实现多任务多触发的动态管理
本文主要讲解以下几个方面: 1.定时任务的定义及其常见的模式 2.springboot集成quart实例 3.中途会遇到的一些问题 一.定时任务的定义及其常见的模式 1)定时任务的定义 首先要明白的是 ...
- 【SpringBoot高级篇】SpringBoot集成MongDB数据库
[SpringBoot高级篇]SpringBoot集成MongDB数据库 MongoDB是什么 ? 主要特点 MongoDB管理 工具 MongoDB 基本概念 数据库 文档(Document) 集合 ...
- SpringBoot集成Druid和数据库密码加密
Druid是阿里开发的数据库连接池,通过简单的配置,可以实现数据库的连接,性能特别强大,可以在页面访问,包括监控数据库性能参数,慢SQL统计,当然还包括数据库连接等. 今天主要记录一下SpringBo ...
- SpringBoot集成mysql-connector-java数据库驱动
官方文档:https://dev.mysql.com/doc/connector-j/8.0/en/ MySQL使用MySQL Connector/J 用Java编程语言开发的客户端应用程序提供连接, ...
- java quartz 动态执行,浅谈SpringBoot集成Quartz动态定时任务
SpringBoot自带schedule 沿用的springboot少xml配置的优良传统,本身支持表达式等多种定时任务 注意在程序启动的时候加上@EnableScheduling @Schedule ...
- 达梦DCA之SpringBoot集成达梦数据库
受"华为.中兴事件"影响,我国科技尤其是上游核心技术受制于人的现状对我国经济发展.社会稳定等都提出了严峻考验.大力发展科技产业,鼓励科技创新,成为当下时不我待的命题.中美贸易战以来 ...
最新文章
- 异常 java.lang.NumberFormatException: For input string:
- 单片机 c语言 按键长按短按,求助:单片机一键长按与短按按键实现的c程序有问题...
- ngx_lua模块中的共享内存字典项API
- 手把手教你完成CSDN对接百度统计 看完这篇文章你还不会对接 欢迎您提刀顺着网线来砍我!!!!
- python 计算过程图片_[Python图像处理]九.图像形态学相关运算
- Oracle RAC 修改 IP 地址
- read -p 的使用
- 博客开通了-里面有秘密哦
- 44.事件分发(示例)
- uni-app商城源码/公众号/小程序/APP多端适配
- LORD MicroStrain 惯性传感系统
- 鸡与蛋问题(先有Class还是先有Object)
- Oracle 锁表查询
- 开放下载 | 2022阿里妈妈技术年刊来啦!
- java中static什么意思
- 苹果向在巴西被盗的iPhone客户支付赔偿金
- 谷歌彻底放弃OKR了
- Java设计模式——备忘录模式
- 什么是心智,如何占领用户心智
- http长连接与短连接